pnpm 全称是 “Performant NPM”,即高性能的 npm。它结合软硬链接与新的依赖组织方式,大大提升了包管理的效率,也同时解决了 “幻影依赖” 的问题,让包管理更加规范,减少潜在风险发生的可能性。
使用 pnpm 很容易,可以使用 npm 安装:
npm i pnpm -g
之后便可用 pnpm 代替 npm 命令了,比如最重要的安装包步骤,可以使用 pnpm i 代替 npm i,这样就算把 pnpm 使用起来了。
pnpm 的优势
用一个比较好记的词描述 pnpm 的优势那就是 “快、准、狠”:
快:安装速度快。
准:安装过的依赖会准确复用缓存,甚至包版本升级带来的变化都只 diff,绝不浪费一点空间,逻辑上也严丝合缝。
狠:直接废掉了幻影依赖,在逻辑合理性与含糊的便捷性上,毫不留情的选择了逻辑合理性。
而带来这些优势的点子,全在官网上的这张图上:
所有 npm 包都安装在全局目录
~/.pnpm-store/v3/files下,同一版本的包仅存储一份内容,甚至不同版本的包也仅存储 diff 内容。每个项目的
node_modules下有.pnpm目录以打平结构管理每个版本包的源码内容,以硬链接方式指向 pnpm-store 中的文件地址。每个项目
node_modules下安装的包结构为树状,符合 node 就近查找规则,以软链接方式将内容指向node_modules/.pnpm中的包。
所以每个包的寻找都要经过三层结构:node_modules/package-a > 软链接 node_modules/.pnpm/package-a@1.0.0/node_modules/package-a > 硬链接 ~/.pnpm-store/v3/files/00/xxxxxx。
经过这三层寻址带来了什么好处呢?为什么是三层,而不是两层或者四层呢?
依赖文件三层寻址的目的
第一层
接着上面的例子思考,第一层寻找依赖是 nodejs 或 webpack 等运行环境/打包工具进行的,他们的在 node_modules 文件夹寻找依赖,并遵循就近原则,所以第一层依赖文件势必要写在 node_modules/package-a 下,一方面遵循依赖寻找路径,一方面

pnpm是一个高性能的npm替代品,通过软硬链接与创新的依赖组织方式提升效率,解决幻影依赖问题。其三层寻址机制确保了安装速度和空间利用率,同时,peer-dependences安装规则和全局pnm-store的组织方式优化了资源管理。pnpm的使用包括全局安装和项目安装,是包管理领域的优秀创新。
最低0.47元/天 解锁文章
6247

被折叠的 条评论
为什么被折叠?



