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

他のコマンドについてはnpmコマンドとの比較は公式ドキュメント「npm からの移行」に詳しくまとまっています。

3. インストールがめっちゃ早いや〜ん 😹

Yarnでは、ダウンロードされたパッケージはキャッシュされるので、一度インストールしたパッケージの再インストールが高速化されます

Yarn v1.10.1、npm v6.4.1で、webpackのインストール速度を比較してみました。比較に用いたのは次のコマンドです(※)。

▼ Yarnによるインストール時間計測コマンド

time yarn add webpack

▼ npmによるインストール時間計測コマンド

time npm install webpack

結果は次のとおりです。Yarnによるインストール時間はnpmの半分でした

▼ インストール時間の計測結果

Yarnnpm
3.5秒8.2秒

timeコマンドはプログラムの実行時間を調べるものです(参考記事「timeコマンドでプログラムの実行時間を知る – Qiita

4. ローカルパッケージの実行が簡単や〜ん 😻

個人的にYarnを使っていて一番嬉しかった内容です。runコマンドでnode_modules/.bin/フォルダーにあるパッケージを実行できます。

yarn run (スクリプト)

たとえば、yarn add typescriptでインストールしたTypeScriptパッケージのコンパイルコマンドを実行するには、次のコマンドを実行します。

yarn run tsc

※ npmでもnpxコマンドで同様の操作が可能になりました(参考記事「npm 5.2.0の新機能! 「npx」でローカルパッケージを手軽に実行しよう」)

Yarn、すごいや〜ん 😼😼😼

「本当に高速なのか?」「どうせ難しいんでしょう?」と半信半疑で導入したYarnですが、すっかりその魅力にハマってしまいました。Vue用のCLIAngular用のCLIなどでも使用されており、人気は伸びてきているようです。npmに慣れていればすぐに使えますので、ぜひ試してみてください🐾