如何使用 npm 本地包的可执行文件

npm 本地安装包的可执行文件位于 node_modules/.bin/ 目录。调用方式:npx <命令>(推荐)、./node_modules/.bin/<命令>,或在 package.json 的 scripts 中直接使用(npm 自动把 .bin 加入 PATH)。

最佳实践
文件、模块与依赖组织示意

本地安装(不带 -g)的 npm 包如果提供命令行工具,可执行文件会链接到 node_modules/.bin/ 目录。 三种调用方式:① npx eslint .(最推荐,自动查找 .bin);② 在 npm scripts 里直接写命令名(npm 运行时自动把 .bin 加进 PATH);③ 显式路径 ./node_modules/.bin/eslint .。

三种方式详解

npm install --save-dev eslint   # 本地安装

npx eslint .                    # 方式一:npx 自动定位
./node_modules/.bin/eslint .    # 方式二:显式路径
{
  "scripts": {
    "lint": "eslint .",
    "test": "mocha"
  }
}

方式三最常用——scripts 里的 eslint 会被解析到 .bin/eslint,npm run lint 就能跑。

为什么不全局安装

  • 版本可复现:每个项目锁死自己的工具版本,换机器 npm install 即用;
  • 避免全局污染:不同项目可以用同一工具的不同版本;
  • CI 友好:流水线里 npm ci && npm test 无需额外全局安装步骤。

npx 的高级用法

npx eslint@8 .          # 指定版本运行
npx create-react-app x  # 不安装直接跑一次性脚手架(下载到缓存执行)

npx 的查找顺序:本地 .bin → $PATH → 临时下载。所以同名工具本地版本永远优先。

常见问题(FAQ)

Q:怎么查看一个包提供了哪些可执行文件?

看包的 package.json 里的 bin 字段,或直接 ls node_modules/.bin/。一个包可以提供多个命令(如 mocha 提供 mocha 和 _mocha)。

Q:.bin 目录里是什么?

符号链接(Windows 是 .cmd shim),指向包的实际入口脚本。删除 node_modules 后它们随之消失,npm install 时按 bin 字段重建。

Q:monorepo 里 .bin 在哪?

npm/pnpm workspaces 会把依赖提升到根 node_modules,可执行文件统一在根的 .bin/。在子包目录运行 npx 也会向上查找,通常无需特殊处理。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台