彗星の如く現れた yarn 。
Facebook社の中の人が作った yarn は、 npm を発展させたパッケージ管理ツールです。*1
npm 同様 package.json
を読み込み、npm リポジトリとほぼ同様の yarn リポジトリからダウンロードしてくるものなので、
npm からの移行は簡単です。
まずは
brew install yarn
もしくは
npm install -g yarn
にて yarn をインストールしてきて、( npm に取って代わるものとして作られているため、前者のやり方を yarn としては推奨しているようだ)
それから現在の node_modules フォルダを削除し、
rm -rf node_modules
yarn install を実行するだけです。( yarn install
とコマンドしても yarn
とコマンドしても同じ )
yarn
さて、気になるのは yarn install にかかる時間。
本当に速くなっているのでしょうか?
time コマンドを利用し見てみましょう。
今回インストールするパッケージの一覧は以下のとおりです。
# package.json より抜粋 "dependencies": { "font-awesome": "^4.7.0", "zepto": "^1.2.0" }, "devDependencies": { "babel-preset-es2015": "^6.18.0", "csso": "^2.3.0", "del": "^2.2.2", "gulp": "^3.9.1", "gulp-babel": "^6.1.2", "gulp-htmlmin": "^3.0.0", "gulp-imagemin": "^3.1.0", "gulp-postcss": "^6.2.0", "gulp-pug": "^3.1.0", "gulp-replace": "^0.5.4", "gulp-sass": "^2.3.2", "gulp-sourcemaps": "^2.2.0", "gulp-uglify": "^2.0.0", "gulp-webserver": "^0.9.1", "postcss-cssnext": "^2.8.0", "postcss-csso": "^1.1.2", "pump": "^1.0.1" }
また、
npm のバージョンは v3.10.8
yarn のバージョンは v0.16.1 を使用しています。
time npm install # 中略 npm install 35.38s user 10.38s system 51% cpu 1:29.60 total
約1分30秒かかりました。続いて yarn です。
time yarn yarn install v0.16.1 info No lockfile found. [1/4] 🔍 Resolving packages... warning gulp > vinyl-fs > glob-stream > minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue warning gulp > vinyl-fs > glob-watcher > gaze > globule > minimatch@0.2.14: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue warning gulp > vinyl-fs > glob-watcher > gaze > globule > glob > graceful-fs@1.2.3: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree. [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... [4/4] 📃 Building fresh packages... success Saved lockfile. ✨ Done in 80.57s. yarn 25.27s user 13.88s system 48% cpu 1:21.12 total
約1分20秒です。少し速いですね。
それから、行数のすごく長い npm install と違い、絵文字を使いつつシンプルに出力されているのが見て取れますね。
そしてここからが yarn の本領発揮です。
yarn は一度インストールしたものはキャッシュに貯め、
次回インストール時はキャッシュにあるものを使い、リポジトリからダウンロードしません。
それにより、インストール時間を大幅に削減しているのです。
再びインストールしてみましょう。
rm -rf node_modules time yarn yarn install v0.16.1 [1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... [4/4] 📃 Building fresh packages... success Saved lockfile. ✨ Done in 23.81s. yarn 13.32s user 8.05s system 88% cpu 24.253 total
約24秒です!
従来の npm install と1分以上の違いがあります。
また、キャッシュにあるものを持ってきているだけなので、
ネットにつなげていない状況でも yarn コマンドは上のとおりに動作します。
まあ、問題は……
du -sh ~/.yarn-cache 86M /Users/user_name/.yarn-cache
ユーザーディレクトリに作られる yarn のキャッシュフォルダの容量がどんどんと大きくなっていきそうなのが心配ですね……。