# 什么是pnpm?
pnpm 和 npm/yarn 一样,是种包管理器。
# pnpm优势
主要优势在于:
- 包安装速度极快
- 磁盘空间利用效率高
- 支持monorepo
速度是 npm/yarn 的两倍。
# 为什么使用pnpm?
由于扁平化算法的极其复杂,以及会存在多项目间相同依赖副本的情况。pnpm 在尝试解决这些问题时,放弃了扁平化处理 node_modules 的方式。而是采用 硬链+软链 方式。
- 不会重复安装同一个包。使用npm/yarn 的时候,如果100个包依赖lodash ,那么就可能安装了100次lodash ,磁盘中就有100个地方写入了这部分代码。但是pnpm会只在一个地方写入这部分代码,后面使用会直接使用hard link。
- 即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码。举个例子,比如 lodash 有 100 个文件,更新版本之后多了一个文件,那么磁盘当中并不会重新写入 101 个文件,而是保留原来的 100 个文件的 hardlink,仅仅写入那一个新增的文件。
# 安装
npm i pnpm
# 常用指令
| 安装依赖 | pnpm install |
|---|---|
| 更新依赖 | pnpm update |
| 删除依赖 | pnpm uninstall |
| 添加依赖 | pnpm add |