跳至主要内容

JavaScript 包管理器基准测试

最后基准测试时间: 2024 年 4 月 21 日凌晨 2:44 (每天更新)。

此基准测试比较了 npm、pnpm、Yarn Classic 和 Yarn PnP 的性能(查看 Yarn 的基准测试 以了解此处未包含的任何其他 Yarn 模式)。

以下是对这些测试如何在现实世界中应用的简要说明

  • clean install: 执行完全全新安装所需的时间:没有 lockfile、缓存中没有包、没有 node_modules 文件夹。
  • with cache, with lockfile, with node_modules: 完成第一次安装后,再次运行安装命令。
  • with cache, with lockfile: 当开发人员获取一个仓库并首次运行安装时。
  • with cache: 与上面相同,但包管理器没有 lockfile 可供使用。
  • with lockfile: 当安装在 CI 服务器上运行时。
  • with cache, with node_modules: 删除 lockfile 并再次运行安装命令。
  • with node_modules, with lockfile: 删除包缓存并再次运行安装命令。
  • with node_modules: 删除包缓存和 lockfile 并再次运行安装命令。
  • update: 通过更改 package.json 中的版本并再次运行安装命令来更新依赖项。

大量文件

应用程序的 package.json 在这里

操作缓存lockfilenode_modulesnpmpnpmYarnYarn PnP
安装31.3 秒9.9 秒7.3 秒3.6 秒
安装1.5 秒1 秒5.2 秒n/a
安装8 秒2.5 秒5.4 秒1.4 秒
安装13.1 秒6.4 秒7.3 秒3 秒
安装11.8 秒6.2 秒5.4 秒1.4 秒
安装1.7 秒2.4 秒6.9 秒n/a
安装1.4 秒1 秒5.2 秒n/a
安装1.7 秒6 秒6.9 秒n/a
更新n/an/an/a6.5 秒3.7 秒5.8 秒3 秒
Graph of the alotta-files results