pnpmというJavaScript のパッケージマネージャーを知ったので調べた
npmやyarnと並ぶパッケージマネージャーで以下の特徴がある(サイトトップより)
- 他のツールよりも最大で2倍高速
- ディスク容量を節約
- モノレポサポート
- package.jsonに書かれていないパッケージにはアクセスできない
ディスク容量の節約について(モチベーション | pnpmより)
npmを使用するとある依存関係を使用しているプロジェクトが100個ある場合、 ディスクにその依存関係のコピーが100個保存されるが、pnpmを使用すると依存関係はコンテンツ探索可能なストアに格納され、異なるバージョンのパッケージに依存している場合は、更新されたファイルのみがストアに追加される
たとえば、100 個のファイルがある依存において、 新しいバージョンがそれらのファイルのうち 1 つだけに変更を加えた場合、 pnpm update は存関係全体を複製するのではなく、ストアにその新しいファイルのみを加える
すべてのファイルはディスク上の 1 つの場所に保存され、 パッケージが インストールされるとそのパッケージのファイルは 1 か所からハードリンクされ、追加のディスク領域を消費しない
これにより、同じバージョンの依存をプロジェクト間で共有できる
他にも機能の比較は以下にまとまっていた
pnpmは他と比べて後発なので、ライブラリが対応していない可能性がある
そこが問題なければ使ってもよいかもだが、使って詰まりたくないので様子をみたい