【翻译】在2018年末,Yarn仍比Npm还要快吗?

原文地址:https://dnasir.com/2018/11/26/is-yarn-still-faster-than-npm-in-late-2018/

如果你像我一样,那么你可能听说过 YarnNpm 的一款可替产品。你甚至可能已经听说过 Yarn 要比 Npm 快不少。
自从 Yarn 首次进入人们视野以来,似乎这一结论已经尘埃落定。但是 Npm 通过一些版本更新来不断回击这一理论。现在是时候让我们看一下这一结论是否有所改变。

设置

我为此实验创建一个小项目,package.json 文件如下所示:
{
  "devDependencies": {
    "@babel/core": "^7.1.2",
    "@babel/plugin-proposal-class-properties": "^7.1.0",
    "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
    "@babel/polyfill": "^7.0.0",
    "@babel/preset-env": "^7.1.0",
    "autoprefixer": "^9.3.1",
    "babel-loader": "^8.0.4",
    "css-loader": "^1.0.1",
    "happypack": "^5.0.0",
    "mini-css-extract-plugin": "^0.4.4",
    "node-sass": "^4.9.4",
    "postcss-loader": "^3.0.0",
    "postcss-preset-env": "^6.3.0",
    "sass-loader": "^7.1.0",
    "style-loader": "^0.23.1",
    "ts-loader": "^5.3.0",
    "typescript": "^3.1.5",
    "vue-loader": "^15.4.2",
    "vue-template-compiler": "^2.5.17",
    "webpack": "^4.23.1",
    "webpack-bundle-analyzer": "^3.0.3",
    "webpack-cli": "^3.1.2",
    "webpack-merge": "^4.1.4"
  },
  "dependencies": {
    "vue": "^2.5.17",
    "vue-property-decorator": "^7.2.0"
  }
}
我将使用 PowershellMeasure-Command 功能来测量执行给定命令所需的时间。
我使用如下命令来测量每个软件包管理器完成安装所花费的时间。这其中还包括了–production生产运行的标志。
Measure-Command { npm install }

Measure-Command { yarn install }
Tip. 本次测试使用的包管理器版本分别是:NPM 6.4.1Yarn 1.12.3,这是写下这篇文章时,它们各自的最新版本。
我通过使用 npm cache clean -fyarn cache clean命令清空了包管理器的缓存,而在需要缓存的情况下,则不执行此命令。

结果

情景 Npm Yarn
清空 31.93s 29.55s
清空(生产环境) 6.19s 12.55s
缓存 20.52s 15.67s
缓存(生产环境) 5.29s 1.56s
对,你没看错。Yarn确确实实在 1.5s 内安装了这两个软件包。
接下来,我很想知道 .lock 文件在性能方面所起的作用,因此我进行了另一组测试,在这些测试中,我将使用相关配置(不使用.lock文件)来运行install命令。
Measure-Command { npm install --no-package-lock }

Measure-Command { yarn install --no-lockfile }
显然,在正常情况下你不会这样做,但是我很好奇 .lock文件 可以带来多少性能上的提升。

结果(.lock文件已禁用)

情景 Npm Yarn
清空 42.12s 46.94s
清空(生产环境) 15.40s 25.53s
缓存 28.09s 25.10s
缓存(生产环境) 8.70s 16.32s
结果非常有趣,因为 Npm 在除一种情况之外的所有情况下都占据上风。显然,.lock文件在提高两个程序包管理器的性能方面都发挥了巨大作用。
在存在.lock文件的情况下,所有运行的速度始终一致,并且在缓存期间,Yarn花了Npm大约四分之一的时间来下载相同的软件包。

结论

在过去的几个版本中,Npm 设法弥补了性能上的差距,就目前而言,Npm 和 Yarn 在速度方面不相上下-与Yarn刚面世时形成了鲜明对比。
因此,如果你要追求速度,那么 Yarn 的性能将比 Npm 稍好一些,但是考虑到 Npm 在过去几个月中取得的进步,这种情况可能仍会改变。
发布了12 篇原创文章 · 获赞 23 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/wyhstars/article/details/103312303