Skip to main content
Version: Next

モチベーション

ディスク容量を節約し、インストール速度を向上#

npm または Yarn を使用している場合、依存を使用する 100 個のプロジェクトがある場合、 ディスクにその依存関係のコピーが 100 個保存されます。 pnpmを使用すると、依存関係はコンテンツ探索可能なストアに格納され、

  1. 異なるバージョンのパッケージに依存している場合は、更新されたファイルのみがストアに追加されます。 たとえば、100 個のファイルがある依存において、 新しいバージョンがそれらのファイルのうち 1 つだけに変更を加えた場合、 pnpm update は存関係全体を複製するのではなく、ストアにその新しいファイルのみを加えます。
  2. すべてのファイルは、ディスク上の 1 つの場所に保存されます。 パッケージが インストールされると、そのパッケージのファイルは 1 か所からハードリンクされ、追加のディスク領域を消費しません。 これにより、同じバージョンの依存をプロジェクト間で共有できます。

これらの結果、 プロジェクトと依存関係の数に比例してディスク上の領域を節約し、インストールが非常に高速になります。

ネストされた node_modules ディレクトリの作成#

npm を使用して依存パッケージをインストールする場合、すべてのパッケージはモジュールディレクトリの直下に格納されます。 結果として、ソースコードは、プロジェクトへの依存関係として追加されていない依存関係にアクセスできてしまいます。

pnpmはシンボリックリンクを使用して、プロジェクトの直接の依存関係のみをモジュールディレクトリの直下に追加します。 pnpm が作成する固有の node_modules 構造と、それがNode.jsエコシステムで正常に動作する理由の詳細については、以下をお読みください。