pnpm とは|同じファイルを1つだけ持つパッケージの管理ツール
pnpm は、JavaScript の部品を取り寄せて管理するツールです。同じファイルを機械の中に1つだけ置き、それぞれの企画からはそこへの結び付けを作るので、企画が増えても置き場が増えません。
- 分類
- プログラミング補助
- 制作の流れ
- 制作
- 日本語対応
- 日本語非対応
- 費用
- 無料(MIT ライセンス)
- 公式サイト
- https://pnpm.io/確認日 2026-09-18
このページの目次
pnpm の概要
pnpm(ピーエヌピーエム)は、JavaScript の部品(パッケージ)を取り寄せて管理するツールです。公式サイトは、掲げる一文を「Fast, disk space efficient package manager(速く、置き場を無駄にしないパッケージの管理ツール)」としています。
公式のリポジトリは、pnpm の性質を8つ挙げています。速いこと(ほかの選択肢の最大2倍。測り方は公式の比較の頁にあります)、置き場を無駄にしないこと、複数の企画を1つの置き場でまとめるのに向くこと、厳しいこと(package.json に書いた部品にしか手が届かない)、同じ結果になること(pnpm-lock.yaml という固定のファイルを持つ)、Node.js の版を切り替える仕組みとしても働くこと、Windows・Linux・macOS で動くこと、2016年から実際の仕事で使われてきたことです。
公式サイトは、pnpm を npm とそのまま入れ替えられるものだとしています。
【公式】https://pnpm.io/
pnpm の特徴
pnpm はゲームを描く機能を持ちません
pnpm が受け持つのは、部品を取り寄せて置き、版を固定する部分です。絵や音を扱う機能は持ちません。
pnpm の置き場の使い方
npm を使う場合、同じ部品に頼る企画が100あれば、その部品の写しが機械の中に100できます。pnpm では、部品を中身で引ける1つの置き場に入れ、そこから結び付けます。
| 場合 | pnpm がすること |
|---|---|
| 同じ版を複数の企画で使う | 機械の中の写しは1つだけ。それぞれの node_modules へ結び付けます。追加の置き場は要りません |
| 新しい版が出て、100個のファイルのうち1個だけが変わった | 置き場に足すのはその1個だけ。部品まるごとを写し直しません |
結び付けには、同じ中身を指す固い結び付け(ハードリンク)か、書き換えのときだけ写す形(リフリンク)を使います。
pnpm の取り寄せの3段階
公式ドキュメントは、取り寄せを3つの段に分けています。
| 段 | 何をするか |
|---|---|
| 1 | 要る部品をすべて見定め、置き場へ取り寄せます |
| 2 | 部品の関係から node_modules の並べ方を計算します |
| 3 | 残りを取り寄せ、置き場から node_modules へ結び付けます |
見定め・取り寄せ・結び付けは、段ごとに終わらせるのではなく同時に進みます。すでに置き場にあるものが多い状態では、取り寄せはほとんど結び付けを作るだけになります。
pnpm の node_modules の並べ方
npm や Yarn Classic では、すべての部品が node_modules の一番上へ引き上げられます。その結果、企画が自分では書いていない部品にもコードから手が届いてしまいます。
pnpm は既定で、その企画が直に書いた部品だけを一番上に置きます。置き方には印の結び付け(シンボリックリンク)を使います。印の結び付けと相性の悪いツールを使っている場合は、nodeLinker の設定を hoisted にします。npm や Yarn Classic と似た並べ方になります。
pnpm のそのほかの機能
公式サイトが挙げている機能は次のとおりです。
| 機能 | 中身 |
|---|---|
| 複数の企画をまとめる | 手元の部品を指す書き方、触った企画にだけ作業を流す絞り込み、全体で1つの固定のファイル |
| 版をまとめて決める | pnpm-workspace.yaml に版を1度書き、あちこちから "catalog:" で参照します |
| 組み立ての安全 | 取り寄せた部品の組み立ての手順を、勝手には動かしません。動かしてよい部品を人が選びます |
| 部品に手を入れる | pn patch で、当て直される差分を残せます。元の作り手の修正を待たずに直せます |
| 実行環境の管理 | 企画ごとに Node.js を入れて固定できます |
命令の短い別名として pn が最初から用意されています。
pnpm の言語の切り替え
公式サイトの上部には言語を切り替える欄があり、日本語も並んでいます。ただし pnpm.io/ja/ の下の頁に出る本文は英語のままです。
公式のリポジトリの README には、日本語を含む5つの言語の版への案内が置かれています。
pnpm の費用とライセンス
pnpm は無料です。公式のリポジトリは、ライセンスを MIT ライセンスとしています。
MIT ライセンスとは
MIT ライセンス(MIT License)は、著作権の表示とライセンス文を残せば、商用も含めて自由に使ってよいとする短い決まりです。
| 項目 | 内容 |
|---|---|
| 費用 | 無料 |
| ライセンス | MIT ライセンス |
| 版 | 12.x(11.x・10.x の資料も残っています) |
| 動く機械 | Windows・Linux・macOS |
| 入手の方法 | macOS と Linux は、公式サイトが示す get.pnpm.io/install.sh の手順。単体の手順を使えば Node.js は要りません |
公式サイトには支援の入口が3つ(Open Collective・GitHub Sponsors・暗号資産による寄付)あります。公式のリポジトリには、Rust で書き直す試み(pacquet)が同梱されていることも書かれています。
- pnpm|公式サイトhttps://pnpm.io/
情報源
- pnpm — 公式サイト(掲げている一文・npm と入れ替えられること・機能の並び・取り寄せの進め方・入れ方・言語の切り替え・版の並び)https://pnpm.io/確認日 2026-09-18
- Motivation — pnpm 公式ドキュメント(置き場の使い方・取り寄せの3段階・`node_modules` の並べ方・`nodeLinker` の設定)https://pnpm.io/motivation確認日 2026-09-18
- pnpm/pnpm — 公式リポジトリ(8つの性質・結び付けの2つの形・ライセンス・Rust で書き直す試み・言語ごとの README)https://github.com/pnpm/pnpm確認日 2026-09-18
- Installation — pnpm 公式ドキュメントの日本語の道(`pnpm.io/ja/` の頁が英語のままであること)https://pnpm.io/ja/installation確認日 2026-09-18