npx 是 Node.js 自带的一个命令行工具(自 npm 5.2+ 起内置),它的主要作用是:
👉 直接执行 npm 包中的可执行命令,而不用全局安装它。
🧩 一句话理解
npx= "临时执行一个 npm 包的命令"
🧠 背景问题
在 npx 之前,我们常常遇到这样的场景:
比如想用 create-react-app 创建项目,你得先全局安装它:
lua
npm install -g create-react-app
create-react-app my-app
但这会导致:
- 全局环境容易"污染";
- 不同项目间版本冲突;
- 有时只是用一次,却留下全局包。
🚀 有了 npx 之后
你可以直接运行:
lua
npx create-react-app my-app
🔹 npx 会做的事情是:
- 检查当前项目(
node_modules/.bin)是否已有create-react-app; - 若没有,则临时下载该包;
- 运行它的命令;
- 执行完后自动删除临时包。
💡 常见使用场景
1️⃣ 临时运行 CLI 工具
css
npx eslint src/
npx prettier --write .
2️⃣ 运行未全局安装的项目命令
例如你的项目依赖了 typescript:
csharp
npx tsc --init
会自动使用项目中
node_modules/typescript/bin/tsc,而不是全局的版本。
3️⃣ 运行特定版本的命令
perl
npx create-react-app@5.0.1 my-app
可方便地指定版本,无需先安装。
4️⃣ 运行 GitHub 或 gist 上的脚本
bash
npx github:vercel/next.js
⚙️ 运行机制简化图
bash
┌──────────────────────────┐
│ 输入命令:npx foo │
└────────────┬─────────────┘
│
┌──────────────┴──────────────┐
│ 1. 查找本地 node_modules/.bin │
└──────────────┬──────────────┘
│
┌─────────────────┴─────────────────┐
│ 2. 若无 → 临时下载到缓存目录执行 │
│ 3. 执行完毕后清除 │
└──────────────────────────────────┘
📦 小结
| 场景 | npm | npx |
|---|---|---|
| 全局安装后执行 | ✅ | ✅ |
| 本地依赖执行 | 需手动路径 | ✅ 自动 |
| 临时执行一次性包 | ❌ | ✅ |
| 指定版本执行 | 不便 | ✅ 方便 |