[nodejs] npm vs npx
0 序
- 最近在使用、研究 AI Agents 时,发现安装 skill 的方式千奇百怪。其中有一种就是
npx命令。故此,了解一下 npx,及与 npm 的渊源。
npx skills add https://clawhub.ai/ivangdavila/skills/summarizer
openclaw skills install @ivangdavila/summarizer
clawhub install ivangdavila/summarizer`
1 npm vs npx
npx 简述
npx是 npm 5.2+ 自带的工具,不是【独立安装包】。
核心:临时执行包,不一定安装到本地。
- 作用:
- 优先调用本地
node_modules/.bin/下的命令;若本地找不到,就临时下载该包运行,运行完直接删除,不污染【项目依赖】。- 可以直接执行远程包、GitHub包,不用手动
npm install。- 语法:
npx <package> [args]
注意:npx不会把包写入
package.json依赖,只是【一次性调用】。
npm、npx 异同对比
| 维度 | npm | npx |
|---|---|---|
| 定位 | 包管理器:安装、管理依赖 | 包执行器:运行包的二进制命令 |
| 主要命令 | npm install / uninstall / list |
npx xxx 直接运行命令 |
| 包存放 | 安装到 node_modules,写入 package.json |
优先本地node_modules;没有就临时下载缓存执行,执行完丢弃,默认不写入依赖 |
| 目的 | 把包保存到项目/全局,供多次使用 | 一次性运行工具脚本,不想永久安装 |
| 修改文件 | 会改 package.json、package‑lock.json |
默认不修改项目任何配置文件 |
| 全局行为 | npm install -g 安装到系统全局 |
npx -p pkg 只是临时,不会装成全局命令 |
通俗例子
# npm:安装到本地,持久保存
npm install create‑react‑app
npx create‑react‑app myapp # 此时npx调用本地已经装好的
# npx:不安装,直接跑,用完就扔
npx create‑react‑app myapp
场景关联: 安装 skill
npx skills add https://xxx/skills/summarizer
这里:
- npx 临时拉取
skills这个npm包; - 执行它的
add子命令; skills工具本身不会留在你的项目依赖;- 但该工具内部逻辑会把skill文件拷贝到磁盘(这是工具业务行为,不是npx干的)。
关键点区分:
- npx 只管启动工具;
- 工具内部自己会下载/写入技能文件,这是
skills包做的,不是npx。
容易踩坑
- npx每次可能拉最新版本;想锁版本:
npx pkg@1.2.3 - npx有缓存,不是每次都重新下载;
- npx不会把包加入package.json,只负责运行。
总结
- npm:管安装管理依赖;
- npx:管执行命令,可临时跑包不用安装。
2 pnpm exec / npx / npm exec 的细微差别
- 关键区分:
npx、npm exec:既能跑本地 bin,也能【自动临时下载】远程包执行pnpm exec:只跑项目本地已安装的 bin,不会自动下载远程包;临时远程包要用pnpm dlx
| 命令 | 出处 | 是否自动下载远程包 | 别名 | 关键行为 | 适用场景 |
|---|---|---|---|---|---|
| npx | npm 5.2+ 独立二进制 | ✅ 本地找不到就临时下载缓存执行 | 无 | 参数必须放位置参数前面;--分隔传参给子命令npm | 日常脚手架、临时工具,历史遗留广泛使用 |
| npm exec(别名 npm x) | npm7+ 内置子命令 | ✅,CI 非交互会自动 yes;支持--workspace工作空间 | npm x | 参数解析更严谨,支持--package多包注入,原生 workspace 支持 | CI、monorepo,官方现代推荐方式 |
| pnpm exec | pnpm 内置 | ❌ 不会下载远程包;本地不存在直接报错 | 可省略 exec:pnpm cmd | 仅把node_modules/.bin注入 PATH,只执行项目已安装二进制pnpm | 执行项目内已装依赖(jest/eslint 等) |
| pnpm dlx | pnpm 内置 | ✅ 临时下载远程包,pnpm 的 npx 等价物 | 旧版pnpx已废弃 | 复用 pnpm 全局内容寻址缓存,速度更快 | pnpm 环境下运行脚手架、一次性工具 |
Y 推荐文献
X 参考文献
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号