Node.jsのパッケージマネージャーについて

Node.jsのパッケージマネージャーといえばnpmやyarnがあります。

ただ具体的にどう違うのかについてはあまり理解していなかった為、この際なので調べてみました。

npm

npm is the standard package manager for Node.js.

引用元:An introduction to the npm package manager

Node.jsの公式にある通り、npmはNode.js公式かつ標準的なパッケージマネージャーです。

2009年にOSSとしてプロジェクトが開始され、運営元であるnpm, inc.は2020年にGitHubに買収されています。

公式なのでNode.jsをインストールすると最初から入っています。なので、特別な設定等無しにすぐ使えます。

yarn

Yarn is a package manager for your code. It allows you to use and share code with other developers from around the world. Yarn does this quickly, securely, and reliably so you don't ever have to worry.

引用元:Introduction | Yarn - Package Manager

yarnはサードパーティーのパッケージマネージャーです。 開発したのはFacebook(現Meta)です。

サードパーティーなのでNode.jsとは別でインストールする必要があります。

# npm経由
npm install -g yarn

# brew経由
brew install yarn

npmとyarnの違い

2つのパッケージマネージャーについて比較してみようと思います。

依存関係の厳密さ

package.jsonを用いることはnpmとyarnとで共通ですが、当初npmに無かったlockファイル (yarn.lock)によって依存関係をより厳密に管理できるようになりました。

ただし現在ではnpmでもpackage-lock.jsonを作成するようになっているのでこの点では差はありません。

速さ

これは一般的にyarnの方が速いと言われています。

色々な検証記事が沢山出ているので気になる方はチェックしてみてください。

As previously stated, Yarn installs dependency packages in parallel, whereas NPM installs them sequentially. As a result, Yarn outperforms NPM when installing bigger files.

引用元:NPM vs Yarn: Which package manager should I use?

セキュリティ

初期のバージョンのnpmではセキュリティ面での懸念がありましたが、version6以降ではパッケージインストール時にセキュリティ評価を行うようになっています。

一方のyarnもパッケージのダウンロード時にセキュリティチェックをバックグラウンドで行っています。

その為、この点でも差は無さそうです。

まとめ

総じて見ると大きな差は無さそうですが、速度の面でyarnに軍配が上がりました。

とはいえ結論としてはどちらでも好きな方を選べば良いような気がします。

また、僕自身全く知らなかったのですがpnpmというパッケージマネージャーもあるようで、「他のツールよりも最大2倍高速」らしいです。

pnpmについてはまた改めて調べてみようと思います。