Yarn 是一个由 Facebook(现 Meta)、Google、Exponent 和 Tilde 于 2016 年联合推出的快速、可靠、安全的 JavaScript 依赖管理工具。它的诞生最初是为了解决早期版本 npm(Node Package Manager)在安装速度、版本一致性和安全性上的诸多痛点。
核心特点
- 极速(Fast): Yarn 会将下载过的每一个包缓存起来(离线缓存),下次安装时直接从缓存读取。同时,它采用并行下载机制,大幅提升了依赖的安装速度。
- 可靠(Reliable): Yarn 首创(或推广)了
yarn.lock锁文件机制。它可以锁定安装包及其所有底层依赖的精确版本,确保同一个项目在不同开发者的电脑上、或在 CI/CD 服务器上安装的依赖树完全一致,避免了“我的电脑上明明可以运行”的尴尬。 - 安全(Secure): 在安装任何代码之前,Yarn 会通过校验和(checksums)验证所有包的完整性,防止包在传输过程中被篡改。
- Workspaces(工作区): 原生支持 Monorepo(单仓库多项目)架构,让开发者可以非常方便地在一个 Git 仓库中管理多个互相依赖的 NPM 包。
- Plug’n’Play (PnP - 即插即用): 在较新的 Yarn 版本中引入,旨在消除臃肿的
node_modules文件夹。它通过一份单个文件来告诉 Node.js 依赖的具置,大幅减少了磁盘占用并加快了模块解析速度。
常用命令对比 (Yarn vs npm)
| 操作 | npm 命令 | Yarn 命令 |
|---|---|---|
| 初始化项目 | npm init |
yarn init |
| 安装所有依赖 | npm install |
yarn install 或直接输入 yarn |
| 添加生产依赖 | npm install [包名] |
yarn add [包名] |
| 添加开发依赖 | npm install [包名] -D |
yarn add[包名] -D 或 --dev |
| 移除依赖 | npm uninstall [包名] |
yarn remove[包名] |
| 运行 package.json 脚本 | npm run [脚本名] |
yarn[脚本名] 或 yarn run [脚本名] |
Yarn Classic 与 Yarn Berry
- Yarn 1.x (Classic): 最经典的版本,目前仍在无数旧项目中使用,非常稳定,但官方已不再为其添加新特性。
- Yarn 2/3/4+ (Berry): Yarn 的现代化重构版本。带来了 PnP、更好的插件架构和极快的速度。最新版本(目前是 v4)体积非常小,且不再需要全局安装,而是通过 Corepack 在项目内进行管理。
安装
corepack enable
corepack prepare yarn@stable --activate
或
npm install -g yarn