Skip to main content
Version: 6.x

モチベーション

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

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

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

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

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

When installing dependencies with npm or Yarn Classic, all packages are hoisted to the root of the modules directory. 結果として、ソースコードは、プロジェクトへの依存関係として追加されていない依存関係にアクセスできてしまいます。

By default, pnpm uses symlinks to add only the direct dependencies of the project into the root of the modules directory. pnpm が作成する固有の node_modules 構造と、それがNode.jsエコシステムで正常に動作する理由の詳細については、以下をお読みください。

tip

If your tooling doesn't work well with symlinks, you may still use pnpm and set the node-linker setting to hoisted. This will instruct pnpm to create a node_modules directory that is similar to those created by npm and Yarn Classic.