このすみノート

Webエンジニアが技術や趣味を書くブログです。

npmからyarnに移行してみたのですが、インストール速度が早くなるかどうかは環境による

私は、JS(JavaScript)のパッケージインストールは、ずっとnpmを使ってきました。ただ、最近とあるプロジェクトのnpm install が遅くなっているので、yarnを試してみました。

公式サイト: https://yarnpkg.com/

yarnは、Facebook製のJavaScriptのパッケージインストーラです。

jp.techcrunch.com

職場ではyarnの導入により早くなったので、自宅でもブログに紹介がてら試してみました。

yarnのインストール方法

yarnは、npmでインストールするのが最もお手軽です。

npm install -g yarn

もちろん、その他のインストール方法もあります。ただ、yarnをインストールしようと思う動機は、大抵においてnpmが遅いからだと思います。

既にnpmが入っている環境下であれば、まずはnpmでインストールしてみるのが良いでしょう。

ちなみに、yarnはnpmと互換性があります。なので「package.json」がそのまま使えます。但し、バージョンのロックファイルは「yarn.lock」であり、「package-lock.json」ではありませんのでご注意ください。

f:id:konosumi:20180214023726j:plain

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」よりは古いので、最新版に上げて試してみることにします。

qiita.com

私の予想では、今回の検証のようなインストールモジュール数が少ないときは、ほとんど差がでないけれど、インストールモジュール数が多くなるとyarnの並列インストールが活きてくるとか、そんな感じなのかなぁと推測しています。

この程度のインストールモジュール数では検証にならないということが分かったので、時間がある時に、大量モジュールのインストールでも試してみようと思います。

しかしながら、職場よりも自宅のnpmのほうが早い気がしてなりません。ネットワークや時間帯の問題とかもありそうだなぁ。