pnpm vs npm
pnpm = Performant npm,高性能包管理器,现在前端新项目主流选择。
核心区别
表格
| 特性 | npm | pnpm |
|---|---|---|
| 归属 | Node.js自带,装 Node 就有 | 独立工具,需要额外安装 |
| 存储机制 | 每个项目完整复制一份依赖,磁盘占用大 | 全局内容可寻址存储 + 硬链接,多项目共用同一份包文件,磁盘节省很多 |
| node_modules | 扁平化提升,存在幽灵依赖(可以 import 没声明的包) | 严格结构,默认禁止幽灵依赖,依赖更安全 |
| 锁文件 | package‑lock.json |
pnpm‑lock.yaml(不能混用)稀土掘金 |
| 安装速度 | 一般 | 快很多,大项目差距明显 |
| peer 依赖 | npm7 + 严格校验,报 ERESOLVE | 同样严格报冲突;也有 --legacy‑peer‑deps 参数 |
| monorepo | npm workspaces | 原生强支持,pnpm‑workspace.yaml |
⚠️ 不要混用包管理器 :一个项目只能用 npm /pnpm 其中一个;老项目切 pnpm:删除
node_modules+package‑lock.json,再执行pnpm install。
pnpm 安装(3 种方式)
Node.js ≥16.14 推荐pnpm
方式 1:npm 全局安装(最简单,Windows 优先)
bash
npm install -g pnpm
校验:
bash
pnpm -v
方式 2:corepack(官方推荐,node 自带,不用 npm 全局)
Node16.13+ 内置 corepack:
bash
corepack enable
corepack prepare pnpm@latest --activate
切换 node 版本时 pnpm 版本不会丢失,适合多 node 版本环境。
方式 3:系统脚本(不依赖 node 也可装)
Windows PowerShell
powershell
iwr https://get.pnpm.io/install.ps1 -useb | iex
Mac / Linux
bash
curl -fsSL https://get.pnpm.io/install.sh | sh -
常用命令对照
表格
| 功能 | npm | pnpm |
|---|---|---|
| 安装全部依赖 | npm install |
pnpm install / pnpm i |
| 安装生产包 | npm install xxx |
pnpm add xxx |
| 安装开发包 | npm install -D xxx |
pnpm add -D xxx |
| 全局安装 | npm install -g xxx |
pnpm add -g xxx |
| 删除包 | npm uninstall xxx |
pnpm remove xxx |
| 运行脚本 | npm run dev |
pnpm dev / pnpm run dev |
| 临时执行包 | npx xxx |
pnpm dlx xxx |
| 清理缓存 | npm cache clean --force |
pnpm store prune |
| peer 冲突绕过 | npm i --legacy‑peer‑deps |
pnpm i --legacy‑peer‑deps |