优点:
极快的安装速度:利用硬链接和全局缓存,避免重复下载。
节省磁盘空间:所有项目共享同一依赖版本,减少冗余。
严格依赖隔离:避免“幽灵依赖”,安全性更高。
原生 Monorepo 支持:
pnpm workspaces
比 npm/yarn 更高效。
如何强制使用 pnpm
?
在 package.json
中添加:
{
"scripts": {
"preinstall": "npx only-allow pnpm"
}
}
1. 安装 pnpm
方法一:通过 npm 安装(推荐)
# 全局安装(需已安装 Node.js)
npm install -g pnpm
# 验证安装
pnpm --version
方法二:独立脚本安装(无需 Node.js)
# macOS/Linux
curl -fsSL https://get.pnpm.io/install.sh | sh -
# Windows (PowerShell)
iwr https://get.pnpm.io/install.ps1 -useb | iex
方法三:使用包管理器
macOS (Homebrew):
brew install pnpm
Linux (snap):
sudo snap install pnpm --classic
Windows (Scoop):
scoop install pnpm
2. 配置环境变量(可选)
pnpm 默认将全局包安装到 <home>/.pnpm-store
,如需修改存储路径:
# 设置全局存储目录(替换为你的路径)
pnpm config set store-dir /path/to/store
配置镜像源(国内加速)
# 使用淘宝镜像
pnpm config set registry https://registry.npmmirror.com
# 恢复默认
pnpm config set registry https://registry.npmjs.org
3. 升级与卸载
升级 pnpm
# 通过 pnpm 自身升级
pnpm add -g pnpm
# 或使用 npm
npm update -g pnpm
卸载 pnpm
# 通过 npm 卸载
npm uninstall -g pnpm
# 彻底删除全局存储(谨慎操作)
rm -rf ~/.pnpm-store
4. 验证安装
# 检查版本
pnpm -v
# 查看配置
pnpm config list
# 测试安装依赖
pnpm create vite@latest my-project --template react
cd my-project && pnpm install
常见问题
1. 权限问题(macOS/Linux)
若安装时报权限错误,可加上 sudo
或修复目录权限:
sudo npm install -g pnpm
# 或
mkdir ~/.pnpm-store && chown -R $(whoami) ~/.pnpm-store
2. 与 npm/yarn 共存
pnpm 与 npm/yarn 可安全共存,但建议项目内统一工具(通过 engines
字段约束):
// package.json
{
"engines": {
"pnpm": ">=8.0.0"
}
}
3. 兼容性警告
某些老旧包可能依赖扁平化 node_modules
,可临时启用提升模式:
pnpm install --shamefully-hoist
总结
推荐安装方式:通过
npm install -g pnpm
或独立脚本安装。国内用户:务必配置镜像源加速。
Monorepo 项目:安装后初始化
pnpm-workspace.yaml
即可使用。
安装完成后,可体验 pnpm 的高效依赖管理和磁盘节省特性!
1. 依赖管理
功能 | pnpm 命令 | npm/yarn 等效命令 |
---|---|---|
初始化项目 | pnpm init |
npm init / yarn init |
安装所有依赖 | pnpm install (或 pnpm i ) |
npm install / yarn |
安装生产依赖 | pnpm add <package> |
npm install <package> |
安装开发依赖 | pnpm add -D <package> |
npm install -D <package> |
全局安装 | pnpm add -g <package> |
npm install -g <package> |
移除依赖 | pnpm remove <package> |
npm uninstall <package> |
更新依赖 | pnpm update |
npm update / yarn upgrade |
更新指定依赖 | pnpm update <package> |
npm update <package> |
检查过时依赖 | pnpm outdated |
npm outdated |
2. 运行脚本
功能 | pnpm 命令 | npm/yarn 等效命令 |
---|---|---|
运行 package.json 脚本 | pnpm run <script> |
npm run <script> |
快捷运行(省略 run ) |
pnpm <script> |
yarn <script> |
交互式脚本选择 | pnpm run |
npm run (无交互) |
并行运行多个脚本 | pnpm -r run <script> |
npm-run-all / yarn workspaces run |