编辑
2022-02-07
开发
00
请注意,本文编写于 1200 天前,最后修改于 971 天前,其中某些信息可能已经过时。

目录

npm的性能问题
yarn的方案
pnpm的优势

npm的性能问题

  • 同一个包被多个包依赖,造成包会被反复下载
  • 包下载是串行的
  • 之前不缓存下载的包
  • 没有lock文件
package - package.json - node_modules - lib_a - node_modules <- util_e@1.0.0 - lib_b - node_modules <- util_e@1.0.0 _ lib_c - node_modules <- util_e@2.0.0 - lib_d - node_modules <- util_e@2.0.0

yarn的方案

  • 扁平化包的依赖,被依赖包会被提到node_modules的根目录,避免重复下载
  • 并行进行包下载
  • 对包进行缓存
package - package.json - node_modules - util_e@1.0.0 - lib_a - lib_b _ lib_c - node_modules <- util_e@2.0.0 - lib_d - node_modules <- util_e@2.0.0

pnpm的优势

  • 所有包存储在全局的位置,通过硬连接链接需要的目录,链接信息存储在store目录
  • 项目中包通过软连接的方式链接到node_modules/.pnpm的虚拟store目录
  • 解决包扁平化的问题
package - package.json - node_modules - .pnpm - lib_a@1.0.0 - node_modules - util_e@1.0.0 - lib_b@1.0.0 - node_modules - util_e@1.0.0 - lib_c@1.0.0 - node_modules - util_e@2.0.0 - lib_d@2.0.0 - node_modules - util_e@2.0.0 - lib_a - lib_b - lib_c - lib_d

这里选择了一个项目进行测试,可以看下node_modules中安装好的包和package.json中声明的包是一致的。 node_modules

attach_16d1752e18d1ba49.png package.json

attach_16d175279962f598.png

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:谭三皮

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!