一文搞懂npm & yarn & pnpm
特征npmyarnpnpm
速度飞快
磁盘占用很小
流行度第一队第二队第三队

从上面表格所示

npm 发行于 2010 年,因为集成在 node 环境中所以称为流行度最高的包管理工具,但具有下载速度慢,体积较大的缺点;之所以磁盘占用大,是因为每个项目执行 npm install 命令时都会生成一个独立的 node_modules 。

yarn 发行于 2016 年,由 faceBook 推出 包管理工具,yarn 的以来下载采用并行下载安装,因为具备同包缓存的功能所以支持离线安装。速度要快于npm

pnpm 发行于 2017 年,使用硬链接来管理依赖项,速度和容量都要优于 npm 和 yarn


根据上面的解释产生疑问,什么是硬链接?pnpm 的磁盘占用量为什么比 npm 和 yarn 小?

  • Pnpm 使用硬链接来管理依赖项。硬链接是文件的另一个名称,它指向同一文件的数据。这意味着 Pnpm 只需要存储一个文件,即使它被多个项目引用。
  • Pnpm 使用并行安装来安装依赖项。这意味着 Pnpm 可以同时安装多个依赖项,这可以加快安装时间。
  • Pnpm 使用缓存来存储已经安装的依赖项。这意味着 Pnpm 在未来安装依赖项时不需要重新下载它们,这可以加快安装时间。

Pnpm 比 NPM 和 Yarn 的磁盘占用更小的原因是它使用硬链接来管理依赖项。硬链接只占用文件原始大小的空间,即使它被多个项目引用。

硬链接是文件的另一个名称,它指向同一文件的数据。硬链接可以创建在同一文件系统上的不同目录中,也可以创建在不同的文件系统上。硬链接不会创建一个新的文件,而是指向原始文件的数据。这意味着硬链接不会占用任何额外的磁盘空间。


同问 yarn 的磁盘占用要小于 npm, yarn是不是也是用了硬链接技术?

Yarn 确实使用了硬链接技术来减少磁盘占用率。但是,Yarn 与 Pnpm 的硬链接实现不同。Pnpm 使用硬链接来管理所有依赖项,而 Yarn 只使用硬链接来管理共享的依赖项。

Yarn 的共享依赖项是在多个项目中使用的依赖项。Yarn 会自动识别这些依赖项,并将它们存储在一个共享目录中。

Yarn 共享依赖的规则:

  • 依赖项必须在项目的 package.json 文件中列出。
  • 依赖项必须在项目的依赖项图中是直接依赖项。
  • 依赖项必须在项目的依赖项图中没有被其他依赖项覆盖。

理论上来说如果 yarn 本地存储的共享依赖项足够多就可以达到 pnpm 的速度和磁盘占用效果

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇