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に慣れていればすぐに使えますので、ぜひ試してみてください🐾。