pnpm 和 npm 以及 yarn 的区别
主要区别有两点:
pnpm 支持全局共享存储
将依赖包安装到全局磁盘当中,使用的时候通过硬链接到达各个项目中去,允许不同项目共享相同的依赖,即使某一个依赖的版本不同,也只是去下载有 diff 的文件,不会全量下载。而 npm 和 yarn 在创建每个项目时,都会将所有项目的依赖放在当前目录下的 node_modules,造成存储空间的浪费
pnpm 解决了 npm 和 yarn 中存在幽灵依赖的问题
幽灵依赖指的是在软件项目中存在但并未在package.json中声明的依赖项 产生原因:使用 npm、yarn 下载某些依赖时会下载上依赖的其他依赖项,但这些间接依赖项并未在package.json中显示声明 pnpm 怎么解决的呢:pnpm 通过非扁平化的 node_modules 来解决的,也就是 node_modules 目录下只有.pnpm和直接依赖项,没有其他次级依赖包
其他
pnpm 的 hoist 机制
也就是依赖提升机制,指将依赖包的某些文件或目录提升到项目的顶层 node_modules 目录中