Skip to content

这些工具都和包管理、依赖安装、命令执行有关,但属于不同生态。

很多人刚接触时会把它们混在一起,其实可以按下面理解:

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-app
bash
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 曾经在国内非常流行。

来源:

npmmirror(原淘宝 NPM 镜像)


为什么出现

早年访问 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 requests

uv:

bash
uv add requests

创建环境

传统:

bash
python -m venv .venv

uv:

bash
uv venv

执行程序

传统:

bash
python main.py

uv:

bash
uv run main.py

临时运行工具

最像 npx 的地方:

bash
uvx ruff

或者:

bash
uv tool run ruff

对比

Node:

bash
npx create-vite

Python:

bash
uvx ruff

都属于:

text
下载
执行
不污染环境

五、它们之间的对应关系

Node生态Python生态作用
npmpip安装依赖
package.jsonpyproject.toml项目配置
package-lock.jsonuv.lock锁版本
npxuvx临时执行工具
npm runuv run执行项目
npm registryPyPI包仓库
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 ↔ 国内镜像源

它们并不是同类工具,而是分别解决「安装依赖」「执行工具」「镜像加速」三个不同层面的问题。