Pnpmとは

Pnpmは何?

  • 公式サイト pnpm.io によると、”pnpm” という名称は “performant npm” の略で、直訳すると「高性能なnpm」を意味します。この名前からも分かるように、pnpmの目的は「効率的なパッケージ管理」を実現することです。
    ちなみに、npmとは “Node Package Manager” の略です。
  • pnpmの開発者は、yarnがまだ存在しなかった時代にこのツールを開発しました。それが「pnpm」という名前の由来かもしれません。

Pnpmのメリット

1. メモリの節約

例えば、10個のプロジェクトを持っている場合、npmを使用すると、プロジェクトごとに巨大なnode_modulesフォルダが生成されます。
一方、pnpmは独自の仕組みとして「content-addressable store」を導入しています。これにより、各プロジェクトのnode_modulesは、実際にはグローバルストアへのリンク(symlink)を保持するのみとなります。

同じパッケージを何度もダウンロードする必要がないため、メモリ使用量が削減されます。

オフラインモードもサポートしており、ネットワークがオフラインの状態でもパッケージにアクセス可能です。

2. 高速なインストール

pnpmのインストールプロセスは3つのステップで構成されています:

  • Dependency resolution: 必要な依存関係をダウンロードしてグローバルストアに保存。
  • Directory structure calculation: node_modulesディレクトリの構造を計算。
  • Linking dependencies: グローバルストアからnode_modulesに依存関係をハードリンクで配置。

これにより、npmやyarnのように各ステップ間にブロッキングタイムが発生せず、インストール速度が向上します。

Pnpmのデメリット

  • 初回インストール時にnpm/yarnよりも時間がかかることがある。
  • Symlinkを使用しているため、Windows環境で権限関連の問題が発生する可能性がある。
  • 非フラットなnode_modules構造が、古いパッケージと互換性がない場合がある。

インストール方法

npm install -g pnpm

Pnpmを使用する企業

pnpmは多くの大手企業で採用されており、その効果が実証されています。詳細はこちらをご覧ください。

まとめ

pnpmは、Node.jsのパッケージ管理において非常に効率的なツールです。その特徴を最大限に活用するため、ぜひ試してみてください!