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