/note/tech

pnpm: スペース効率に優れたJavaScriptパッケージマネージャ

pnpmが他と違うのはパッケージの管理方法だ。npmとYarnがプロジェクト毎に別々のパッケージのコピーをインストールするのに対して、pnpmはすべてのパッケージについて単一コピーを維持し、オリジナルインストレーションの参照にはハードリンクやシンボリックリンクを使用している。

pnpm 5.0より前は重複管理がパッケージレベルで行われていたため、同じLodashのバージョンが2回使用されていた場合において、パッケージのインストールが1回で、2つのプロジェクトにリンクされていた。

pnpm 5.0では新たな連想ストレージ(content addressable storage)システムが導入されたことで、個々のファイル間の差異をpnpmがテストできるようになった。その結果として、異なるパッケージ内にイントールされた同一ファイルを列挙して、再利用することが可能になっている。例えば、最新のLodashリリースで変更されたファイルが、300近い全ファイル中の9つのみであった場合、新システムでは、変更されていない大部分のファイルについては、重複の必要を排除している。

ふーむ