pnpm、npm 还是 yarn?
做 JavaScript 项目,包管理器选得好不好,很影响效率。主流的有三个:npm、yarn 和 pnpm,各有各的长处,适合的场景也不一样。

npm:靠得住的老将
npm 是 Node.js 自带的包管理器,包生态出了名的大,命令也简单直接。
示例:安装 React:
yarn:主打性能
yarn 比 npm 下载更快,装包也更安全。它处理依赖很稳,所以在大项目里很吃香。
示例:添加 Vue,同时锁定版本:
pnpm:省资源的那个
pnpm 的亮点是存储管理很高效,它用 symlink 减少磁盘占用。手上同时有好几个项目,或者在用 monorepo 的开发者,用它特别合适。
示例:安装 Angular,包不会重复存:
怎么选:PNPM、NPM 还是 Yarn
给 JavaScript 项目挑包管理器,先弄清楚每个工具擅长什么,自然就知道哪个最合适了。
PNPM
PNPM 很适合对性能要求高的环境。它擅长对付大型 monorepo,依赖管理也很先进。存储方式又高效,所以对可用性要求高的项目,它是首选。
NPM
NPM 最适合依赖不多的简单项目,好上手,兼容性也广。已经在用 NPM 的项目,最好接着用它,保持一致,也省得折腾迁移。
Yarn
依赖很多的大项目,用 Yarn 装得快,安全方面也更强。它的安装结果是确定的,又支持 monorepo,跑起来更顺,依赖冲突也更少。
总之,三个包管理器各有优势,适合不同类型、不同规模的项目,按自己的场景挑最合适的那个就行。
2024 年有什么新变化
pnpm 的更新
- 速度和效率:pnpm 的重点还是提速,安装时间明显缩短了。
- 磁盘空间管理:装包占用的磁盘空间,还在想办法进一步压缩。
- Workspace 和 monorepo 支持:支持加强了,目标是让 workspace 和 monorepo 用起来更简单、性能更好。
npm 的改进
- 安全性提升:npm 新加了一些高级的漏洞检测功能,项目更安全了。
- Monorepo 支持:加强了 monorepo 支持,workspace 功能也有改进。
- 性能优化:一直在优化,想让安装更快、整体性能更好。
Yarn 的新东西
- Plug’n’Play(PnP):Yarn 继续改进 PnP,让性能更好、磁盘占用更少。
- TypeScript 和 JavaScript 支持:现代 JavaScript 特性和 TypeScript 都支持得更好了。
- 开发者友好的工具:重点还是做新工具、打磨老工具,让它们更直观、更好用。