pnpm 分析总结


一、安装

npm i -g pnpm

二、特性

  1. 速度快
  2. 高效使用磁盘空间
  • pnpm 内部使用基于内容寻址的文件系统来存储磁盘上所有的文件,这个文件系统出色的地方在于:
  • 不会重复安装同一个包。用 npm/yarn 的时候,如果 100 个项目都依赖 lodash,那么 lodash 很可能就被安装了 100 次,磁盘中就有 100 个地方写入了这部分代码。但在使用 pnpm
    只会安装一次,磁盘中只有一个地方写入,后面再次使用都会直接使用 hardlink。symlink和hardlink机制 (软链接和硬链接)
  • 即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码。举个例子,比如 lodash 有 100 个文件,更新版本之后多了一个文件,那么磁盘当中并不会重新写入 101 个文件,而是保留原来的 100 个文件的
    hardlink,仅仅写入那一个新增的文件。
  1. 对monorepo的支持
  • https://github.com/pnpm/pnpm/issues/3415
  1. pnpm store 问题 本地包体积过大
  • pnpm会下载包保存在本地,时间长了导致本地store文件过大,可以通过减少重复不被引入的包的方式 foo@0.01 foo@1.0.0 你可以通过pnpm store prune
    来清理无用的包,当再次需要他们重新下载。不建议过于频繁。