1. 并行下载架构
- Yarn 会先构建依赖关系图,分析各包之间的依赖顺序,再对互不依赖的包发起并行下载
- 相比之下,早期 npm 采用串行模型,一个包下载完成后才开始下一个
- 当项目依赖层级较深、依赖数量较多时,并行下载的优势更为明显
2. 安装流程的算法优化
- Yarn 的安装流程为:解析 yarn.lock → 计算所有包的哈希值(基于解析地址与完整性校验)→ 检查缓存中是否已有对应 zip 包 → 命中则跳过下载、直接建立链接 → 并行执行 postinstall 脚本
- 关键优化在于把"是否需要重装"的判断提前到了哈希计算阶段,且缓存采用 zip 格式(解压速度快于 tar.gz)
- npm 后续也重写了安装管线并引入并行化,因此在冷安装场景下两者差距已明显缩小
- 具体而言,npm 11(随 Node.js 24 LTS 于 2025 年 10 月推广)对安装流程做了显著优化,官方基准显示中等规模项目(约 500 个依赖)的安装耗时较 npm 10 缩短约 38%
3. 重复安装时的持久优势
- Yarn 的速度优势主要体现在重复安装(热缓存)场景,这也是日常开发和 CI 中最常见的情况
- 在 Yarn Modern 的 Plug'n'Play 模式下,由于无需重建 node_modules 目录树,热安装和 lockfile 命中场景下的速度领先较为显著
- 而 Yarn Classic 相对 npm 11 的速度优势已经很小,因为 npm 11(2024 年 12 月发布、2025 年随 Node.js 24 LTS 大规模推广)的安装管线优化基本补齐了并行化短板