私は、JS(JavaScript)のパッケージインストールは、ずっとnpmを使ってきました。ただ、最近とあるプロジェクトのnpm install が遅くなっているので、yarnを試してみました。
公式サイト: https://yarnpkg.com/
yarnは、Facebook製のJavaScriptのパッケージインストーラです。
職場ではyarnの導入により早くなったので、自宅でもブログに紹介がてら試してみました。
yarnのインストール方法
yarnは、npmでインストールするのが最もお手軽です。
npm install -g yarn
もちろん、その他のインストール方法もあります。ただ、yarnをインストールしようと思う動機は、大抵においてnpmが遅いからだと思います。
既にnpmが入っている環境下であれば、まずはnpmでインストールしてみるのが良いでしょう。
ちなみに、yarnはnpmと互換性があります。なので「package.json」がそのまま使えます。但し、バージョンのロックファイルは「yarn.lock」であり、「package-lock.json」ではありませんのでご注意ください。
yarnの実力を試してみる
以下のようなpackage.jsonで試してみました。
「vueとreactとangular1を入れる環境なんて存在するのか?」というツッコミが飛んできそうですが、思いついたパッケージをただ入れただけなので、許してください。
{ "dependencies": { "react": "16.2.0", "angular": "1.6.9", "vue": "2.5.13", "co": "4.6.0" } }
ディレクトリの下にはpackage.json以外は何も存在しない状態で、それぞれ試してみました。
なお、サーバーはVagrantで立てたCentOS7です。
[root@localhost testnpm]# tree . . └── package.json 0 directories, 1 file
試行結果です。
- yarn(version 1.3.2)
[root@localhost testnpm]# yarn cache clean [root@localhost testnpm]# yarn install Done in 3.18s.
- npm(version 5.6.0)
[root@localhost testnpm]# npm cache verify [root@localhost testnpm]# npm install added 20 packages in 1.719s
早くなっていないどころか、遅くなっている?
結論:早くなるとは限らない
この後も、何回かVagrantを作り直して試してみたりしたのですが、あまり差が出ませんでした。
結論としては、npmが遅いなぁと感じたら導入を検討してみるくらいで十分かなという印象です。
今回の検証では、下記のやり方でNode.jsの最新安定版(v8.9.4)を使用したのですが、もしかしたら最新版のnpmではパフォーマンスが改善されていたりするのかもしれません。職場のNode.jsは「v8.9.4」よりは古いので、最新版に上げて試してみることにします。
私の予想では、今回の検証のようなインストールモジュール数が少ないときは、ほとんど差がでないけれど、インストールモジュール数が多くなるとyarnの並列インストールが活きてくるとか、そんな感じなのかなぁと推測しています。
この程度のインストールモジュール数では検証にならないということが分かったので、時間がある時に、大量モジュールのインストールでも試してみようと思います。
しかしながら、職場よりも自宅のnpmのほうが早い気がしてなりません。ネットワークや時間帯の問題とかもありそうだなぁ。