npx
和 npm
是 Node.js 生态系统中两个常用的工具,它们有不同的作用和使用场景。
1. npm
(Node Package Manager)
- 作用:
npm
是 Node.js 的包管理工具,主要用于:- 安装、卸载、更新项目依赖(包)。
- 管理
package.json
文件(记录项目依赖和配置)。 - 运行项目中定义的脚本(通过
npm run <script>
)。
- 典型用法:
# 安装包到项目的 node_modules(本地依赖)
npm install <package-name>
# 全局安装包(系统级)
npm install -g <package-name>
# 安装开发依赖
npm install --save-dev <package-name>
# 运行项目脚本(需在 package.json 的 "scripts" 中定义)
npm run build
- 特点:
- 依赖需要显式安装到本地或全局。
- 适合管理长期依赖(如项目所需的库)。
2. npx
(Node Package eXecute)
- 作用:
npx
是一个包执行工具,随npm@5.2.0+
自动安装,核心功能是:- 临时安装并运行包:无需全局或本地安装,直接执行包的命令。
- 运行本地已安装的包:自动查找本地
node_modules/.bin
下的命令。 - 执行远程仓库的包(如脚手架工具)。
- 典型用法:
# 临时运行未安装的包(自动下载并执行,完成后删除)
npx <package-name> [args]
# 运行本地已安装的包(等效于 npm run)
npx <command>
# 示例:使用 create-react-app 创建项目(无需全局安装)
npx create-react-app my-app
- 特点:
- 避免全局安装包的污染(如脚手架工具只需偶尔使用)。
- 默认优先使用本地已安装的包,若未找到则从远程临时安装。
- 支持运行不同版本的包(例如:
npx node@14 myscript.js
)。
核心区别
特性 | npm | npx |
---|---|---|
主要用途 | 管理依赖(安装、卸载、更新) | 执行包的命令(临时或本地) |
安装依赖 | 必须显式安装(本地或全局) | 可临时安装并运行,无需显式安装 |
全局污染 | 全局安装可能导致版本冲突 | 避免全局安装,按需使用 |
执行本地包命令 | 需通过 npm run 或 ./node_modules/.bin/ |
直接 npx <command> |
运行远程包 | 不支持 | 支持(如 npx create-react-app ) |
常见场景示例
- 运行脚手架工具(如创建项目):
# 传统方式(需全局安装):
npm install -g create-react-app
create-react-app my-app
# 使用 npx(推荐):
npx create-react-app my-app
- 执行一次性命令(如代码格式化):
# 不安装 prettier,直接运行:
npx prettier --write .
- 测试不同版本的包:
# 临时使用旧版 Node.js 运行脚本
npx node@14 myscript.js
总结
- **用 **
npm
:管理项目依赖(长期使用的库)。 - **用 **
npx
:执行一次性命令或未安装的包(如脚手架、工具脚本)。 - 最佳实践:尽量减少全局安装,优先使用
npx
运行工具类包。