@expo/sudo-prompt

中文文档
9.3.2发布于 2025/01/23MITTypeScriptCommonJS零依赖近 30 天下载 5568.2万

使用 sudo 运行命令, 必要时用 OS 对话框提示用户

中文使用文档
文档目录7 节
  1. 横线
  2. 安装
  3. 使用量
  4. 行为
  5. 仅限非图形终端命令
  6. 货币
  7. 取消时间戳

sudo 即时

[注] 这是叉子在 expo/sude-prompt 来解决已贬值的节点API. 上游:

使用非图形终端命令运行 sudo,必要时会用图形 OS 对话框提醒用户。 可用于背景 Node.js 应用程序或需要的本地 Electron apps sudo。 。 。 .

横线

sudo-prompt 提供本地 OS 对话框提示 马科斯, (中文(简体) ), 链接 财务报告和审定财务报表 窗口。 。 。 .

macOS

Linux

Windows

安装

sudo-prompt 不存在外部依赖性,也不要求任何本地约束.

npm install sudo-prompt

使用量

注意: 您的命令不应该从 sudo 前缀.

var sudo = require('sudo-prompt');
var options = {
  name: 'Electron',
  icns: '/Applications/Electron.app/Contents/Resources/Electron.icns', // (optional)
};
sudo.exec('echo hello', options,
  function(error, stdout, stderr) {
    if (error) throw error;
    console.log('stdout: ' + stdout);
  }
);

sudo-prompt 将使用 process.title 作为 options.name 若为 options.name 未提供. options.name 必须是只有字母数字(支持空间),最多70个字符.

sudo-prompt 将在所有平台上保存当前工作目录。 环境变量可以明确使用 options.env。 。 。 .

sudo-prompt.exec() 与 child-process.exec() (由于平台和权限的限制).

行为

在macOS上, sudo-prompt 应该像 sudo 在壳中命令。 如果你的命令不工作 sudo 命令在 shell 中(可能因为它使用) > 重定向到一个受限制文件,然后它可能无法工作 sudo-prompt然而,仍然可以使用sudo-prompt来获得特权外壳, 欲了解更多信息,请参见此结出的问题。 。 。 .

在Linux上, sudo-prompt 将使用其中之一 pkexec 或者说 kdesudo 以显示密码提示并运行命令。 在可能的情况下, sudo-prompt 会尝试让这些模仿 sudo。根据使用哪一个二进制,并由于一些二进制的限制,您程序的名称或命令本身可以显示给您的用户. sudo-prompt 将不使用 gksudo 自此以来 gksudo 不支持同时提示。 通过 options.icns 当前不支持 sudo-prompt 在 Linux 上。 欢迎补丁添加基于 polkit。 。 。 .

在视窗上, sudo-prompt 将使用用户账户控制来提升命令。 通过 options.name 或者说 options.icns 当前不支持 sudo-prompt 在视窗上.

仅限非图形终端命令

就像你不应该使用 sudo 要启动任何图形化应用程序,你永远不要使用 sudo-prompt 以启动任何图形应用程序。 这样做会使您家目录中的文件成为root所拥有 . sudo-prompt 被明确设计为发射非图形终端命令. 有关更多信息, 读取此文章。 。 。 .

货币

关于用户选择拥有的系统 tty-tickets 启用(大多数系统),每次调用 exec() 将生成单独的密码提示。 何处 tty-tickets 已禁用,随后呼叫 exec() 即使用户的密码 sudo 时间戳文件仍然有效,因为边缘大小写 sudo 本身, 详情见此讨论。 。 。 .

你不应该依赖 sudo-prompt 执行您的电话顺序。 如果您需要执行电话命令, 您应该在申请中明确命令您的电话。 如果命令是短命的,你应该总是排队打给 exec() ,以确保您的用户没有过载密码提示.

取消时间戳

在 macOS 和 Linux 上,您可以取消用户的 sudo 通过运行您的终端中的以下命令来强制提示显示时间戳文件 :

$ sudo -k

版本与发布记录

@expo/sudo-prompt 共发布 1 个版本,首次发布于 2025/01/23;过去 12 个月发布了 0 个版本。

版本发布日期距今
9.3.2latest2025/01/231.8 年前

关于 @expo/sudo-prompt 的常见问题

@expo/sudo-prompt 是什么?

使用 sudo 运行命令, 必要时用 OS 对话框提示用户

如何安装 @expo/sudo-prompt?

在项目目录运行 npm install @expo/sudo-prompt,或使用 pnpm add / yarn add / bun add。

@expo/sudo-prompt 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@expo/sudo-prompt 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@expo/sudo-prompt 可以商用吗?

@expo/sudo-prompt 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@expo/sudo-prompt 的下载量有多少?

根据 npm 官方下载统计,@expo/sudo-prompt 在 2026/10/14 – 2026/11/12 这 30 天内被下载 55,681,588 次,日均约 1,856,053 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@expo/sudo-prompt 还在维护吗?

最新版本 9.3.2 发布于 2025/01/23(1.8 年前);至今共发布 1 个版本,其中过去 12 个月发布了 0 个;首次发布于 2025/01/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。