mcpField
P
pnpm

pnpm

公式
github.com開発ツール36.9kpnpm今日更新
リポジトリ公式サイト

pnpm について

pnpm は JavaScript プロジェクト向けのパッケージマネージャーで、ディスク使用量の節約とワークスペース対応で知られています。pnpm コマンドで操作し、corepack enable pnpm で有効化できます。

主な機能

  1. 01pnpm install でプロジェクトの依存関係をインストール
  2. 02pnpm add zod で zod などのパッケージを追加
  3. 03pnpm run build などでパッケージスクリプトを実行
  4. 04corepack enable pnpm で Corepack 経由で有効化

活用シーン

  1. 01JavaScript リポジトリをクローンした後に依存関係を整える
  2. 02ローカル開発や CI でビルドスクリプトを実行する
  3. 03依存関係を共有するマルチパッケージのワークスペースを管理する

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
corepack enable pnpm

インストール後にpnpm --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
pnpm install
02
pnpm add zod
03
pnpm run build

詳細

简体中文 | 日本語 | 한국어 | Italiano | Português Brasileiro

pnpm

高速でディスク容量を効率的に使うパッケージマネージャー:

  • 高速。 他の選択肢より最大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 を使用しており、非常に高速で信頼性が高いと評価しています。

npm version Ecosystem E2E OpenCollective OpenCollective X Follow Stand With Ukraine

Platinum Sponsors

Bit OpenAI Notion
CodeRabbit

Gold Sponsors

Sanity Discord Vite
SerpApi Stackblitz Workleap
Nx Latitude

Silver Sponsors

Replit Cybozu BairesDev
Thesys devowl.io u|screen
Leniolabs_ Depot Cerbos
⏱️ Time.now

スポンサーになることで、このプロジェクトを支援できます。

背景

pnpm は、ディスク上のすべてのモジュールディレクトリにあるファイルを、コンテンツアドレス可能なファイルシステムに保存します。 npm を使う場合、lodash を使うプロジェクトが 100 個あると、ディスク上には lodash のコピーが 100 個できます。 pnpm では、lodash はコンテンツアドレス可能なストレージに保存されるため、次のようになります。

  1. lodash の異なるバージョンに依存している場合、ストアに追加されるのは異なるファイルだけです。 lodash に 100 個のファイルがあり、そのうちの 1 つだけが変更された新しいバージョンがある場合、 pnpm update でストレージに追加される新しいファイルは 1 つだけです。
  2. すべてのファイルはディスク上の 1 か所に保存されます。パッケージをインストールすると、そのファイルは追加のディスク容量を消費せずに、その 1 か所からリンクされます。リンクにはハードリンクまたはリフリンク(コピーオンライト)が使われます。

その結果、ディスク容量を数ギガバイト節約でき、インストールも大幅に高速化されます。 pnpm が作成する独自の node_modules 構造の詳細と、 それが Node.js エコシステムで問題なく機能する理由については、こちらの短い記事をご覧ください:フラットな node_modules だけが唯一の方法ではありません。

💖 このプロジェクトを気に入っていただけましたか?ツイートして、ぜひ周りの人に知らせてください。

はじめに

ベンチマーク

pnpm は npm や Yarn classic より最大 2 倍高速です。すべてのベンチマークをご覧ください。

依存関係の多いアプリでのベンチマーク:

README の画像

ライセンス

MIT。ただし、pnpr/ ディレクトリは、PolyForm Shield License 1.0.0に基づきソースコードを公開しています。

コメント