UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【pnpm】pnpmとは

pnpmというJavaScript のパッケージマネージャーを知ったので調べた

pnpm.io

npmやyarnと並ぶパッケージマネージャーで以下の特徴がある(サイトトップより)

  • 他のツールよりも最大で2倍高速
  • ディスク容量を節約
  • モノレポサポート
  • package.jsonに書かれていないパッケージにはアクセスできない

ディスク容量の節約について(モチベーション | pnpmより)

npmを使用するとある依存関係を使用しているプロジェクトが100個ある場合、 ディスクにその依存関係のコピーが100個保存されるが、pnpmを使用すると依存関係はコンテンツ探索可能なストアに格納され、異なるバージョンのパッケージに依存している場合は、更新されたファイルのみがストアに追加される

たとえば、100 個のファイルがある依存において、 新しいバージョンがそれらのファイルのうち 1 つだけに変更を加えた場合、 pnpm update は存関係全体を複製するのではなく、ストアにその新しいファイルのみを加える

すべてのファイルはディスク上の 1 つの場所に保存され、 パッケージが インストールされるとそのパッケージのファイルは 1 か所からハードリンクされ、追加のディスク領域を消費しない

これにより、同じバージョンの依存をプロジェクト間で共有できる

他にも機能の比較は以下にまとまっていた

pnpm.io

pnpmは他と比べて後発なので、ライブラリが対応していない可能性がある

そこが問題なければ使ってもよいかもだが、使って詰まりたくないので様子をみたい