文章目录
- Yarn:曾经改变前端生态的包管理器
- 解决的问题很具体
- 三个核心卖点
- 值得一提的功能
- 历史地位
- 现在还该用吗?
Yarn:曾经改变前端生态的包管理器
Yarn 是 Facebook 在 2016 年发布的 JavaScript 包管理工具,Star 数超过 4.1 万。在那个 npm 还不够快、不够稳的年代,Yarn 的出现直接改变了前端开发者的日常工作流。
解决的问题很具体
当年 npm 有两个大毛病:安装慢,且不确定。同样的 package.json,不同机器装出来的依赖树可能不一样。这在团队协作和 CI/CD 环境里是灾难。
Yarn 用 lockfile 机制解决了这个问题。第一次安装后生成 yarn.lock,之后所有人、所有机器都按这个文件装,结果完全一致。
三个核心卖点
快。Yarn 会缓存每个下载过的包,第二次安装直接走本地缓存。同时几乎所有操作都是并发的,网络利用率拉满。
稳。确定性算法加上 lockfile,保证任何一台机器上能跑的安装,在另一台机器上也能跑。
安全。每个包安装前都会校验 checksum,防止被篡改。这在供应链攻击频发的今天看是常识,但在 2016 年算是领先理念。
值得一提的功能
离线模式:装过一次的包,断网也能再装。这对网络环境不稳定或者需要频繁重建环境的场景很有用。
扁平化依赖:遇到不同版本的同一依赖,Yarn 会尽量解析到同一个版本,减少 node_modules 的体积。当年 node_modules 嵌套太深是被吐槽最多的问题之一。
网络容错:单个请求失败不会拖垮整个安装流程,自动重试机制保证成功率。
历史地位
Yarn 1.x 的成功倒逼 npm 进步。npm 后来加入了 package-lock.json,性能也优化了不少。某种程度上说,Yarn 推动了整个 Node.js 生态的包管理水平。
不过这个仓库现在主要是维护状态。Yarn 的新版本(3.x 及以后)在另一个仓库开发,功能和架构都有大改动,引入了 PnP 等新机制。1.x 版本目前只接受安全修复。
现在还该用吗?
如果是新项目,直接用 npm 或者新版 Yarn 都行,差异没以前那么大了。但如果项目里已经有 yarn.lock,没必要特意迁移,稳定就好。
对于从那个年代过来的前端开发者,Yarn 算是一个时代的符号。它证明了一件事:当现有工具不够好时,造一个更好的轮子是有价值的。
是一个时代的符号。它证明了一件事:当现有工具不够好时,造一个更好的轮子是有价值的。