跳到主要内容

2 篇博文 含有标签「包管理」

查看所有标签

如果你刚接触前端工程化,第一次看到 npm installyarn installpnpm install,大概率会有一个疑问:

它们不都是“装包”的吗?为什么会有三个?

答案是:它们做的是同一件事,但解决问题的方式不一样。

  • npm 是 Node.js 官方自带的包管理器,历史最久,生态最稳。
  • Yarn 是在 npm 早期体验不够好的时候出现的,重点解决“慢”和“不稳定”。
  • pnpm 是在 Yarn 和 npm 继续发展之后,进一步解决“磁盘浪费”和“依赖不严谨”的问题。

这篇文章不讲太多绕人的术语,只用一条主线讲清楚:

为什么会从 npm 发展到 Yarn,再发展到 pnpm?

Node.jsnpmYarnpnpm包管理7 分钟阅读

很多人第一次用 pnpm,都会先感受到两个特点:

  • 安装速度挺快
  • node_modules 看起来和 npmYarn 不太一样

然后就会冒出一个问题:

pnpm 到底做了什么,为什么它既能省空间,又能保持依赖可用?

如果你去搜它的原理,常常会看到一堆词:

  • 内容寻址存储
  • 硬链接
  • 软链接
  • 严格依赖隔离

这些词本身没错,但一上来全堆出来,反而很容易越看越晕。

这篇文章我想用更通俗的方式,把 pnpm 的底层逻辑讲清楚。你不需要先懂文件系统,只要抓住一条主线:

pnpm 的核心目标,就是“同样的包尽量只存一份,同时又要让 Node.js 还能正常找到它”。