Performant npm,高性能、节省磁盘空间的 JavaScript 包管理工具,兼容 npm 和 yarn。通过硬链接和符号链接管理 node_modules,避免重复安装相同依赖。
核心特点
- 节省磁盘:相同依赖只存储一份(存入
~/.pnpm-store) - 安装快:并行下载 + 增量更新
- 严格隔离:默认
hoist=false,防止幽灵依赖(phantom dependencies) - Monorepo 支持:内置 workspaces
- 安全性:防止不必要的依赖渗入
安装
npm install -g pnpm环境变量配置
# 手动设置
export PNPM_HOME="$HOME/.pnpm"
export PATH="$PNPM_HOME:$PATH"
# 自动写入 ~/.zshrc(推荐)
pnpm setup
source ~/.zshrc必须设置好
PNPM_HOME和PATH后才能执行pnpm add -g <package>
常用命令
初始化 & 安装
pnpm init
pnpm install添加/删除依赖
pnpm add <package>
pnpm add <package>@<version>
pnpm add -D <package> # devDependencies
pnpm add -g <package> # 全局安装
pnpm remove <package>更新
pnpm update
pnpm update <package>运行脚本
pnpm run <script>
pnpm <script> # 简写Workspaces
pnpm -r <command> # 在所有 workspace 递归执行工具边界
| 场景 | 推荐 |
|---|---|
| 磁盘节省 / 多项目共享依赖 | pnpm ✅ |
| Monorepo | pnpm ✅ |
| 对幽灵依赖敏感 | pnpm ✅ |
| 最大生态兼容性 | npm |
踩坑点
- 部分旧工具假设
node_modules是扁平结构,与 pnpm 严格隔离冲突,需配置.npmrc加shamefully-hoist=true绕过 - 全局安装路径需确保
PNPM_HOME在 PATH 中 - Monorepo 中 workspace 协议写法:
"pkg": "workspace:*"