pnpm 入门与实践指南
pnpm 入门与实践指南
一个高效、快速、节省磁盘空间的 Node.js 包管理器替代方案。
为什么选择 pnpm?
- 🧩 节省磁盘空间:pnpm 通过硬链接共享依赖,避免重复安装。
- 🚀 安装速度更快:相比 npm/yarn 更高效。
- 🔐 默认严格依赖:避免隐式依赖,项目更稳定。
- 🛠️ 更好的工作区支持:内建 monorepo 管理工具,媲美 Lerna + Yarn Workspaces。
安装 pnpm
你可以通过 npm 安装 pnpm:
npm install -g pnpm
或者使用 corepack(Node.js >= 16.13.0):
corepack enable
corepack prepare pnpm@latest --activate
验证版本:
pnpm -v
常用命令对比
操作 | npm | yarn | pnpm |
---|---|---|---|
安装依赖 | npm install | yarn | pnpm install |
添加依赖 | npm install lodash | yarn add lodash | pnpm add lodash |
添加 dev 依赖 | npm install -D typescript | yarn add -D typescript | pnpm add -D typescript |
删除依赖 | npm uninstall lodash | yarn remove lodash | pnpm remove lodash |
清空缓存 | npm cache clean --force | yarn cache clean | pnpm store prune |
使用 pnpm workspace 管理 Monorepo
pnpm
原生支持 monorepo,创建项目结构如下:
my-monorepo/
├── package.json
├── pnpm-workspace.yaml
└── packages/├── a/└── b/
根目录 package.json
{"name": "my-monorepo","private": true,"workspaces": ["packages/*"]
}
pnpm-workspace.yaml
packages:- 'packages/*'
常见问题与解决方案
Q: 项目引用未生效?
A: 确保在根目录运行 pnpm install
,而非子项目。
Q: 某些依赖无法安装?
A: 尝试加上 --shamefully-hoist
参数兼容旧项目:
pnpm install --shamefully-hoist
小技巧
只更新部分包
pnpm update <package-name>
执行子包命令
pnpm -F <package-name> run <script>
总结
如果你正在为项目安装慢、node_modules 体积大、依赖错乱等问题困扰,pnpm 是非常值得尝试的解决方案。它的设计理念与性能优化让它在现代前端工程中表现出色,特别适合 Monorepo 场景。
参考链接
- pnpm 官网
- pnpm 与 npm/yarn 对比