# pnpm 的小记

# pnpm 有什么优势

  • 在性能上有了极大的提升,根据目前官方提供的数据来看,pnpm 是传统的 npm、yarn 包管理工具的速度的两倍
  • 基于 hardlink 机制,在全局 store 中存储 node_modules 依赖里面的 hard link 地址,然后在引用依赖的时候则是通过 symlink 去找到对应虚拟磁盘目录下(.pnpm 目录)的依赖地址,当安装软件包时, 其包含的所有文件都会硬链接自此位置,而不会占用 额外的硬盘空间,从而大大节省了磁盘空间。
  • 避免幽灵依赖,解释起来很简单,在我们的项目中就算某个包没有被安装,也就是 package.json 中并没有,但是我们却能够引用到这个包。防止其中一个依赖发生变化导致全局出错,依赖提升的安全问题

# 补充:当 npm i xx 的时候,发生了什么?

  • 在 node_modules/.bin/ 目录中创建依赖的可执行文件
  • 下载 package.json 中对应版本的 tar 包到本地
  • 将依赖解压到本地缓存
  • 将依赖从缓存拷贝到 node_modules 下对应的目录,并且将该目录软链接到 ./node_modules/.bin 目录下
Last Updated: 3/23/2023, 2:54:16 AM