pnpm について
pnpm は JavaScript プロジェクト向けのパッケージマネージャーで、ディスク使用量の節約とワークスペース対応で知られています。pnpm コマンドで操作し、corepack enable pnpm で有効化できます。
主な機能
- 01pnpm install でプロジェクトの依存関係をインストール
- 02pnpm add zod で zod などのパッケージを追加
- 03pnpm run build などでパッケージスクリプトを実行
- 04corepack enable pnpm で Corepack 経由で有効化
活用シーン
- 01JavaScript リポジトリをクローンした後に依存関係を整える
- 02ローカル開発や CI でビルドスクリプトを実行する
- 03依存関係を共有するマルチパッケージのワークスペースを管理する
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にpnpm --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
简体中文 | 日本語 | 한국어 | Italiano | Português Brasileiro
高速でディスク容量を効率的に使うパッケージマネージャー:
- 高速。 他の選択肢より最大2倍高速です(ベンチマークをご覧ください)。
- 効率的。
node_modules内のファイルは、単一のコンテンツアドレス指定ストレージからリンクされます。 - モノレポに最適。
- 厳格。 パッケージがアクセスできるのは、自身の
package.jsonに指定された依存関係のみです。 - 決定論的。
pnpm-lock.yamlというロックファイルを使用します。 - Node.js のバージョンマネージャーとしても使えます。 pnpm runtimeをご覧ください。
- あらゆる環境で動作します。 Windows、Linux、macOS をサポートしています。
- 実績豊富。 2016年以降、あらゆる規模のチームが本番環境で利用しています。
- 実験的な Rust 移植版。 Rust で書かれた CLI の実験的な移植版であるpacquetが含まれています。
- npm および Yarn との機能比較の全容を見る。
Rushチームの言葉を引用します。
Microsoft は、数百のプロジェクトと毎日数百件の PR がある Rush リポジトリで pnpm を使用しており、非常に高速で信頼性が高いと評価しています。
Platinum Sponsors
|
|
|
|
|
|
Gold Sponsors
|
|
|
|
|
|
|
|
|
|
|
Silver Sponsors
|
|
|
|
|
|
|
|
|
|
|
| ⏱️ Time.now |
スポンサーになることで、このプロジェクトを支援できます。
背景
pnpm は、ディスク上のすべてのモジュールディレクトリにあるファイルを、コンテンツアドレス可能なファイルシステムに保存します。 npm を使う場合、lodash を使うプロジェクトが 100 個あると、ディスク上には lodash のコピーが 100 個できます。 pnpm では、lodash はコンテンツアドレス可能なストレージに保存されるため、次のようになります。
- lodash の異なるバージョンに依存している場合、ストアに追加されるのは異なるファイルだけです。
lodash に 100 個のファイルがあり、そのうちの 1 つだけが変更された新しいバージョンがある場合、
pnpm updateでストレージに追加される新しいファイルは 1 つだけです。 - すべてのファイルはディスク上の 1 か所に保存されます。パッケージをインストールすると、そのファイルは追加のディスク容量を消費せずに、その 1 か所からリンクされます。リンクにはハードリンクまたはリフリンク(コピーオンライト)が使われます。
その結果、ディスク容量を数ギガバイト節約でき、インストールも大幅に高速化されます。
pnpm が作成する独自の node_modules 構造の詳細と、
それが Node.js エコシステムで問題なく機能する理由については、こちらの短い記事をご覧ください:フラットな node_modules だけが唯一の方法ではありません。
💖 このプロジェクトを気に入っていただけましたか?ツイートして、ぜひ周りの人に知らせてください。
はじめに
ベンチマーク
pnpm は npm や Yarn classic より最大 2 倍高速です。すべてのベンチマークをご覧ください。
依存関係の多いアプリでのベンチマーク:
ライセンス
MIT。ただし、pnpr/ ディレクトリは、PolyForm Shield License 1.0.0に基づきソースコードを公開しています。