第二篇:npx 到底是怎么工作的?搞懂 node_modules/.bin
【摘要】 npx 到底是怎么工作的?搞懂 node_modules/.bin上一篇我们知道了 npx 可以执行 npm 包。但还有一个问题:npx 到底是怎么找到这些程序的?答案和一个非常重要的目录有关:node_modules/.bin/什么是 node_modules/.bin?例如安装 Vite:npm install -D vite项目中会出现:node_modules/├── .bin/│ ...
npx 到底是怎么工作的?搞懂 node_modules/.bin
上一篇我们知道了 npx 可以执行 npm 包。
但还有一个问题:
npx 到底是怎么找到这些程序的?
答案和一个非常重要的目录有关:
node_modules/.bin/
什么是 node_modules/.bin?
例如安装 Vite:
npm install -D vite
项目中会出现:
node_modules/
├── .bin/
│ └── vite
└── vite/
其中 .bin 目录存放了依赖包提供的命令行入口。
因此执行:
npx vite
时,npx 可以找到当前项目中的:
node_modules/.bin/vite
然后执行它。
为什么不直接执行?
当然可以直接执行:
./node_modules/.bin/vite
但这样非常麻烦。
所以 npx 帮我们处理了命令查找。
npx vite
↓
查找项目依赖
↓
node_modules/.bin/vite
↓
执行 Vite
这也是为什么不推荐全部全局安装
如果工具安装在项目中:
npm install -D eslint
就可以:
npx eslint .
项目自己管理工具版本,不依赖系统全局环境。
这对于团队协作尤其重要。
package.json 的作用
项目通常会记录:
{
"devDependencies": {
"typescript": "^5.4.5"
}
}
其他开发者执行:
npm install
之后,就可以:
npx tsc
使用项目要求的工具。
总结
npx 最核心的工作之一,就是帮助我们方便地找到:
node_modules/.bin/
中的 CLI 程序。
理解这一点,也就理解了为什么 npx xxx 可以直接运行项目依赖。
下一篇我们来看看 npx 最常见的实际用途:创建项目、运行工具以及指定版本。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)