精读《pnpm》

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pnpm 全称是 “Performant NPM”,即高性能的 npm。它结合软硬链接与新的依赖组织方式,大大提升了包管理的效率,也同时解决了 “幻影依赖” 的问题,让包管理更加规范,减少潜在风险发生的可能性。

使用 pnpm 很容易,可以使用 npm 安装:

npm i pnpm -g

之后便可用 pnpm 代替 npm 命令了,比如最重要的安装包步骤,可以使用 pnpm i 代替 npm i,这样就算把 pnpm 使用起来了。

pnpm 的优势

用一个比较好记的词描述 pnpm 的优势那就是 “快、准、狠”:

  • 快:安装速度快。

  • 准:安装过的依赖会准确复用缓存,甚至包版本升级带来的变化都只 diff,绝不浪费一点空间,逻辑上也严丝合缝。

  • 狠:直接废掉了幻影依赖,在逻辑合理性与含糊的便捷性上,毫不留情的选择了逻辑合理性。

而带来这些优势的点子,全在官网上的这张图上:

18fd1090c950fe51e08adeb6c761fbcd.png
  • 所有 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

经过这三层寻址带来了什么好处呢?为什么是三层,而不是两层或者四层呢?

依赖文件三层寻址的目的

第一层

接着上面的例子思考,第一层寻找依赖是 nodejswebpack 等运行环境/打包工具进行的,他们的在 node_modules 文件夹寻找依赖,并遵循就近原则,所以第一层依赖文件势必要写在 node_modules/package-a 下,一方面遵循依赖寻找路径,一方面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值