Node.js 中的 npm bin 命令

2025 年 4 月 29 日 | 阅读 3 分钟

在 Node.js 生态系统中,一个鲜为人知但极其有用的命令是 npm bin,它会告诉你 npm 为当前项目安装的本地或全局可执行二进制文件的位置。在 Node.js 中使用 npm bin 命令可以定位包含本地安装的 npm 包可执行文件的目录。当包被本地安装时,其二进制文件位于项目的 `node_modules/.bin` 目录中。当运行 npm bin 时,会生成此目录的绝对路径。当添加 `--global` 标志时,会显示全局安装的包的全局二进制文件目录。这个命令对于直接运行本地安装的工具或将它们集成到脚本中非常有用。因为这些二进制文件可以直接在 npm 脚本中使用,所以始终会使用正确的版本。它有助于高效地管理和启动项目特定的 npm 二进制文件。

npm bin 命令有两种类型。它们是

  • npm bin: 显示本地项目二进制文件的路径。

它将提供你当前项目的 `node_modules/.bin` 目录的位置,npm 会在这里存储本地安装的二进制文件。

可以使用 `-g` 选项来确定全局二进制文件的位置

  • npm bin -g: 显示全局安装的二进制文件的路径。

此命令将输出包含全局安装的可执行文件的全局目录的路径。

要点

Nodejs 中 npm bin 命令的几个关键点如下:

1. 本地二进制目录

当你本地安装 npm 包时,可执行文件会存储在当前项目的 `node_modules/.bin/` 目录中(例如,`npm install some-package`)。

上述目录的路径是

2. 全局二进制目录

当你全局安装 npm 包时,可执行文件会存储在一个全局目录中(例如,`npm install -g some-package`)。

可以使用 `--global` 标志来定位此目录

3. 目的

  • 当你想要直接运行本地安装的二进制文件而不使用完整路径时,此命令很有帮助。
  • 开发人员经常将其包含在脚本或工作流中,以确保执行正确的二进制版本。

4. 集成到脚本中

`package.json` 定义了 npm 脚本,这些脚本会自动将 `node_modules/.bin` 中的二进制文件包含在 PATH 中。

例如

npm 会将 `node_modules/.bin` 目录添加到 PATH 中,因此即使 `nodemon` 是本地安装的,它也会被检测到并运行。

示例

a. 假设我们本地安装了 eslint

b. 之后,如果我们尝试运行 npm bin,它将显示

c. 我们可以通过以下方式手动执行二进制文件

让我们举一个运行 npm bin 来执行本地二进制文件的例子

1. 本地安装一个包

a. 在项目中安装一个本地工具,如 prettier

2. 下一步是查找本地二进制路径

使用 npm bin 命令获取 `node_modules/.bin` 的目录路径

3. 手动执行二进制文件

使用 `.bin` 目录中包含的 prettier 二进制文件来格式化文件

4. 使用 npm.bin 简化访问

临时将目录添加到 PATH

5. 使用脚本

使用命令运行脚本

为 npm 的使用设置开发环境

当在需要特定路径的环境(如 Docker 容器或 CI/CD 流水线)中工作时,了解二进制文件的位置可以帮助你更好地自定义环境。

例如,在 Docker 中可能需要显式定义二进制路径

结论

总而言之,npm bin 命令是 Node.js 中一个有用的工具,用于定位 npm 存储已安装包的可执行文件的目录。无论是在项目 `node_modules/.bin` 目录中处理本地安装的包,还是处理全局安装的实用程序,此命令都能方便地访问这些二进制文件,并确保使用正确的版本。它对于直接执行工具、一致且项目特定地管理依赖项以及自动化任务特别有用。通过将其与脚本集成或临时将目录添加到系统 PATH,开发人员可以简化他们的开发流程,并更轻松地利用强大的基于 npm 的工具。