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 ✅
Monorepopnpm ✅
对幽灵依赖敏感pnpm ✅
最大生态兼容性npm

踩坑点

  • 部分旧工具假设 node_modules 是扁平结构,与 pnpm 严格隔离冲突,需配置 .npmrc 加 shamefully-hoist=true 绕过
  • 全局安装路径需确保 PNPM_HOME 在 PATH 中
  • Monorepo 中 workspace 协议写法:"pkg": "workspace:*"