npm、yarn、pnpm 都是 Node.js 包管理器,核心职责一致:
- 安装依赖
- 解析依赖树
- 管理 lock 文件
- 运行脚本
- 发布包
它们的主要差异,不在“能不能用”,而在:
- 安装速度
- 磁盘占用
- 依赖管理机制
- Monorepo 支持能力
- 生态兼容性
- 团队协作一致性
1.核心对比
| 维度 |
npm |
yarn |
pnpm |
| 官方属性 |
Node 官方默认 |
第三方,历史很强 |
第三方,现代化很强 |
| 上手难度 |
最低 |
中等 |
中等 |
| 兼容性 |
最好 |
好 |
较好 |
| 安装速度 |
较快 |
较快 |
通常最快 |
| 磁盘占用 |
较高 |
较高 |
最省 |
| 依赖管理严格性 |
一般 |
一般到较强 |
最严格 |
| Monorepo 支持 |
有 |
强 |
很强 |
| 老项目适配 |
最稳 |
很多老项目在用 |
可能踩旧坑 |
| 工程化体验 |
合格 |
强 |
很强 |
2.推荐决策矩阵
| 场景 |
推荐 |
| 个人小项目 |
npm / pnpm |
| 企业新项目 |
pnpm |
| Monorepo |
pnpm |
| 历史 Yarn 项目 |
Yarn |
| 兼容性优先 |
npm |
| 性能和磁盘优先 |
pnpm |
| 最低学习成本 |
npm |
3.命令对照
| 操作 |
npm |
yarn |
pnpm |
| 安装全部依赖 |
npm install |
yarn |
pnpm install |
| 安装生产依赖 |
npm install pkg |
yarn add pkg |
pnpm add pkg |
| 安装开发依赖 |
npm install -D pkg |
yarn add -D pkg |
pnpm add -D pkg |
| 删除依赖 |
npm uninstall pkg |
yarn remove pkg |
pnpm remove pkg |
| 运行脚本 |
npm run dev |
yarn dev |
pnpm dev |
4.结论
- npm:最稳、最通用、默认首选
- yarn:历史强者,老项目常见
- pnpm:现代工程化最佳实践之一,适合新项目和 Monorepo