npmと互換性のあるパッケージマネージャー「Yarn」、使っていますか?
筆者は半信半疑で使い始めましたが、今ではすっかりその魅力にハマり、すべてのプロジェクトで使うようになりました。本エントリーではnpmから乗り換えてわかったYarnの4つのメリットを紹介します🐾 。
なお、Yarnについてのインストール方法や基本的な使い方は記事「npm互換のJavaScriptパッケージマネージャーYarn入門」を参照ください。
1. npmと一緒に使えるや〜ん 😽
Yarnを使う前に持っていた最大の懸念は「Yarnを導入したらプロジェクトに関わるメンバー全員がYarnを使う必要があるのか?」ということです。メンバー内全員に新しい技術を使ってもらおうとすれば、それだけで大きなコストになります。
Yarnはプロジェクト内のチーム全員で導入する必要はなく、ある人はYarnを使う、ある人はnpmでパッケージ管理する、ということが可能です。Yarnを使う人のために、yarn.lockファイルをGitHubで共有するのがよいでしょう。
2. 学習コストがすごく低いや〜ん 😺
Yarnは新しい技術なので学習コストの高さを心配していました。しかし、多くのコマンドがnpmのコマンド名が変わっただけなので習得は容易でした。
▼ 初期化(npm init --yesにあたるもの)
yarn init --yes
※ --yesは-yでも可能
▼ パッケージのインストール(npm install --save-devにあたるもの)
yarn add (パッケージ名) --dev
※ --devは-Dでも可能
▼ パッケージのアンインストール(npm uninstallにあたるもの)
yarn remove (パッケージ名)
▼ package.jsonからパッケージのインストール(npm installにあたるもの)
yarn
3. インストールがめっちゃ早いや〜ん 😹
Yarnでは、ダウンロードされたパッケージはキャッシュされるので、一度インストールしたパッケージの再インストールが高速化されます。
Yarn v1.10.1、npm v6.4.1で、webpackのインストール速度を比較してみました。比較に用いたのは次のコマンドです(※)。
▼ Yarnによるインストール時間計測コマンド
time yarn add webpack
▼ npmによるインストール時間計測コマンド
time npm install webpack
結果は次のとおりです。Yarnによるインストール時間はnpmの半分でした。
▼ インストール時間の計測結果
| Yarn | npm |
|---|---|
| 3.5秒 | 8.2秒 |
※ timeコマンドはプログラムの実行時間を調べるものです(参考記事「timeコマンドでプログラムの実行時間を知る - Qiita」<)。
4. ローカルパッケージの実行が簡単や〜ん 😻
個人的にYarnを使っていて一番嬉しかった内容です。runコマンドでnode_modules/.bin/フォルダーにあるパッケージを実行できます。
yarn run (スクリプト)
たとえば、yarn add typescriptでインストールしたTypeScriptパッケージのコンパイルコマンドを実行するには、次のコマンドを実行します。
yarn run tsc
Yarn、すごいや〜ん 😼😼😼
「本当に高速なのか?」「どうせ難しいんでしょう?」と半信半疑で導入したYarnですが、すっかりその魅力にハマってしまいました。npmに慣れていればすぐに使えますので、ぜひ試してみてください🐾。

