关于包管理器Npm、Yarn和Pnpm的一些总结( 三 )


文章插图
PNPM 的核心思想是在整个项目内共享依赖项,而不是每个项目都拥有自己的依赖项副本 。
这是官方文档提供的原理图:

关于包管理器Npm、Yarn和Pnpm的一些总结

文章插图
可以看到有个公共的依赖包安装池,然后通过软链接引入到各个项目所需要的依赖中,这样就减少了幽灵依赖、依赖嵌套和重复下载的问题 。
PNPM的优点如下:
节省磁盘空间:pnpm采用链接的方式将依赖项共享到全局store中,避免了每个项目都需要拷贝一份依赖包的问题,从而显著减少了磁盘占用空间 。
提升安装速度:pnpm不需要每次都下载相同的依赖项,而是从全局store中直接链接到各个项目中,因此可以极大地提高安装速度 。
避免了幽灵依赖、重复依赖和依赖嵌套:pnpm采用链接的方式,避免了项目之间依赖相同包不一致的问题,同时避免了重复安装相同版本的依赖项和依赖嵌套的问题 。
支持多种包引用方式:pnpm支持路径引用和git仓库引用,可以更加灵活地管理依赖项 。
天生支持monorepo管理:得益于pnpm的软链接特性,可以在同一个workspace下共享依赖和模块等 。
另外,对于存储大量依赖的情况,pnpm提供了「pnpm store prune」命令,可以定期清理不再使用的依赖项,释放磁盘空间 。
参考文章
  • 关于现代包管理器的深度思考——为什么现在我更推荐 pnpm 而不是 npm/yarn?
  • pnpm 是凭什么对 npm 和 yarn 降维打击的
  • 现代前端工程为什么越来越离不开 Monorepo?
  • 现代前端工程为什么越来越离不开 Monorepo?
  • 为什么越来越多的项目选择 Monorepo?
  • pnpm官方文档
写在最后最后对不同包管理器的优缺点、特点做了一些总结:
关于包管理器Npm、Yarn和Pnpm的一些总结

文章插图
学而知不足,水平有限,还望诸君多多指教 。觉得文章不错的读者,不妨点个关注,收藏起来上班摸鱼的时候品尝 。




推荐阅读