Yarnがどのくらい速いのか実際に使ってみた
Yarnとは
Facebookが公開したパッケージマネージャー。
npmと同じようにパッケージを管理できる。
yarnでもpackage.jsonをそのまま使用可能なため、既存のプロジェクトにも導入が可能。
詳細な機能は公式サイトを参照。
Yarn 公式サイト
インストール
Homebrew を使っていれば下記のコマンドだけでインストールが完了。
$ brew update $ brew install yarn
どのくらい速いのか
下記のpackage.jsonで試してみた。
{ "name": "sample", "version": "1.0.0", "description": "default template for development.", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Hiroaki Imai", "license": "", "dependencies": { "jquery": "^3.0.0" }, "devDependencies": { "babel": "^6.5.2", "babel-core": "^6.10.4", "babel-polyfill": "^6.9.1", "babel-preset-es2015": "^6.9.0", "babel-preset-stage-0": "^6.5.0", "babelify": "^7.3.0", "browserify": "^13.0.1", "gulp": "^3.9.1", "gulp-load-plugins": "^1.2.4", "gulp-plumber": "^1.1.0", "gulp-sass": "^2.3.2", "gulp-util": "^3.0.7", "html-browserify": "0.0.6", "lodash.assign": "^4.0.9", "vinyl-source-stream": "^1.1.0", "watchify": "^3.7.0" } }
使用したnpmのバージョンは下記の通り。
$ npm -v
3.10.8
npmとyarnとでどのくらい差があるかを試してみた。 まずは通常のnpmの場合。キャッシュをクリアしてインストール。
$ npm cache clean $ time npm i npm i 45.52s user 11.52s system 39% cpu 2:23.88 total
キャッシュが効いた状態で再度実行。
$ time npm i npm i 41.34s user 10.01s system 49% cpu 1:42.92 total
次にyarnの場合はこちら。
インストールはyarn
もしくはyarn install
で実行。
$ rm -rf ~/.yarn-cache $ rm -rf ~/.yarn $ time yarn ✨ Done in 107.47s. yarn 27.98s user 12.92s system 37% cpu 1:48.29 total
次にキャッシュがある状態で実行。
$ time yarn ✨ Done in 23.35s. yarn 11.03s user 5.61s system 69% cpu 24.049 total
yarnの場合、初回のインストール時でもnpmに比べて30秒ほど速い。 キャッシュが効いた場合だと、npmが1分42秒なのに比べてyarnは24秒とかなりの差がある。
キャッシュ無し | キャッシュあり | |
---|---|---|
npm | 2:23.88 | 1:42.92 |
yarn | 1:48.29 | 24.049 |
yarnは一度インストールするとローカルにパッケージを持つため2回目以降のインストールが速くなる。
まとめ
yarnを使うことでインストールにかかる時間を短縮でき、 開発着手までの手間を減らすことができる。 今回の検証では記載していないが、パッケージのバージョン固定もできるため、 開発規模が大きくなればなるほど効果が出てきそう。 逆に規模が小さい開発の場合はあまりメリットがないかもしれない。
また、リリースされたばかりということもあり、今後どのようにyarnがメンテナンスされていくかが不明。 実プロジェクトに適用していくかはもう少し様子を見ておいたほうがよいかもしれない。