主题
这些工具都和包管理、依赖安装、命令执行有关,但属于不同生态。
很多人刚接触时会把它们混在一起,其实可以按下面理解:
text
Node.js
├── npm (官方包管理器)
│ ├── npx (npm附带的命令执行工具)
│ └── cnpm (淘宝镜像团队提供的npm替代品)
│
Python
└── uv (新一代Python包管理器)一、npm 是什么
npm(Node Package Manager)是 Node.js 官方包管理器。
安装 Node.js 后,通常会自动安装 npm。
作用:
安装依赖
bash
npm install lodash或者
bash
npm i lodash会下载:
text
node_modules/
package.json
package-lock.json安装全局工具
例如:
bash
npm install -g typescript安装后:
bash
tsc就可以直接使用。
运行脚本
package.json
json
{
"scripts": {
"dev": "vite",
"build": "vite build"
}
}执行:
bash
npm run dev
npm run build本质
npm =
text
包仓库
+
依赖下载器
+
脚本运行器类似:
text
Java -> Maven
Python -> pip
Go -> go mod
Node -> npm二、npx 是什么
很多人以为 npx 是独立工具。
实际上:
text
npx 属于 npm以前是独立包:
bash
npm install -g npx后来直接并入 npm。
作用
执行 npm 包中的命令。
例如:
bash
npx create-vite流程:
text
发现本地没有 create-vite
↓
临时下载
↓
执行
↓
执行完成删除缓存相当于:
bash
npm install create-vite
node xxx但不需要自己安装。
示例
创建项目
bash
npx create-react-app my-appbash
npx create-vite@latest执行本地依赖
安装:
bash
npm install eslint执行:
bash
npx eslint .等价于:
bash
./node_modules/.bin/eslint .指定版本
bash
npx typescript@5.8 tsc使用指定版本:
text
typescript 5.8不会影响全局环境。
本质
npx 是:
text
npm包执行器类似:
text
docker run临时拉镜像执行。
三、cnpm 是什么
cnpm 曾经在国内非常流行。
来源:
为什么出现
早年访问 npm 官方仓库:
text
registry.npmjs.org速度慢。
经常:
text
ETIMEDOUT
ECONNRESET所以淘宝建立镜像:
text
registry.npmmirror.com并推出:
bash
npm install -g cnpm使用
bash
cnpm install axios实际上:
text
cnpm
↓
淘宝镜像
↓
npm现在还推荐吗
一般不推荐。
现在直接:
bash
npm config set registry https://registry.npmmirror.com即可。
或者:
bash
pnpm
yarn速度和体验更好。
四、uv 是什么
uv 和 npm、npx、cnpm 不是同一个生态。
它属于 Python。
由 Astral 开发。
为什么火
传统 Python:
text
pip
virtualenv
pip-tools
poetry
pyenv一堆工具。
uv 想统一:
text
Python安装
+
虚拟环境
+
依赖管理
+
锁文件
+
运行脚本安装依赖
传统:
bash
pip install requestsuv:
bash
uv add requests创建环境
传统:
bash
python -m venv .venvuv:
bash
uv venv执行程序
传统:
bash
python main.pyuv:
bash
uv run main.py临时运行工具
最像 npx 的地方:
bash
uvx ruff或者:
bash
uv tool run ruff对比
Node:
bash
npx create-vitePython:
bash
uvx ruff都属于:
text
下载
执行
不污染环境五、它们之间的对应关系
| Node生态 | Python生态 | 作用 |
|---|---|---|
| npm | pip | 安装依赖 |
| package.json | pyproject.toml | 项目配置 |
| package-lock.json | uv.lock | 锁版本 |
| npx | uvx | 临时执行工具 |
| npm run | uv run | 执行项目 |
| npm registry | PyPI | 包仓库 |
| cnpm | 国内PyPI镜像 | 镜像加速 |
六、2026年的推荐方案
如果你是前端或 Node 开发:
bash
Node.js
+
npm
+
npx基础必会。
更推荐:
bash
pnpm代替 npm 安装依赖:
bash
npm -> pnpm
npx -> pnpm dlx例如:
bash
pnpm add axios
pnpm dlx create-vite如果你是 Python 开发:
bash
uv基本可以替代:
text
pip
virtualenv
pip-tools
poetry很多新项目已经直接使用 uv。
一句话总结:
text
npm = Node官方包管理器
npx = npm自带的临时命令执行器
cnpm = npm的国内镜像方案(历史产物)
uv = Python生态的新一代包管理器而从功能映射看:
text
npm ↔ pip
npx ↔ uvx
cnpm ↔ 国内镜像源它们并不是同类工具,而是分别解决「安装依赖」「执行工具」「镜像加速」三个不同层面的问题。