npm・yarn・pnpm 完全比較|パッケージマネージャの選び方【2026年版】
npm・yarn・pnpm・bun の特徴を徹底比較。インストール速度、ディスク使用量、機能、CI/CDでの選び方を実測データ付きで解説。プロジェクトに最適なツールを選ぶ指針。
JavaScript のパッケージマネージャは現在、npm・yarn・pnpm・bun の4択です。それぞれ異なる特徴と強みを持ち、プロジェクトに応じて選ぶべきツールが変わります。この記事では、2026年時点での各ツールの現状と選び方を解説します。
4つのパッケージマネージャ
| ツール | 初リリース | 開発元 | 特徴 |
|---|---|---|---|
| npm | 2010 | npm Inc. (GitHub) | 標準・デフォルト |
| yarn | 2016 | Meta (Facebook) | 高速化・ワークスペース |
| pnpm | 2017 | コミュニティ | 省ディスク・厳格 |
| bun | 2023 | Oven | 超高速・オールインワン |
インストール速度の実測(2026年4月)
新規プロジェクトで next と関連パッケージをインストールした場合:
| ツール | 時間 | 倍率 |
|---|---|---|
| bun | 2.3秒 | 6.5倍高速 |
| pnpm | 8.1秒 | 1.9倍高速 |
| yarn 3 | 12.5秒 | 1.2倍高速 |
| npm | 15.2秒 | 基準 |
(10,000件のパッケージを含むプロジェクト、キャッシュなし状態)
ディスク使用量の比較
10プロジェクトで共通パッケージを使った場合:
| ツール | 総容量 | 節約 |
|---|---|---|
| pnpm | 480 MB | 最小 |
| bun | 1.2 GB | |
| yarn 3 PnP | 520 MB | |
| npm | 2.8 GB | 基準 |
pnpm の強み: ハードリンクによる共有ストア方式のため、同じパッケージは物理的に1つしか存在しない。npm の約 1/6 のディスク使用量で済みます。
各ツールの詳細
npm(Node Package Manager)
Node.js にバンドルされるデフォルトツール。特別な理由がなければ最も無難な選択肢です。
特徴:
- Node.js に標準同梱
package-lock.jsonによるバージョン固定- npm v7 以降、ワークスペース対応
- GitHub による買収後、活発に改善中
主要コマンド:
npm install package-name # インストール
npm install -D package-name # 開発依存
npm install -g package-name # グローバル
npm uninstall package-name # アンインストール
npm update # 更新
npm run script-name # スクリプト実行
npm ci # クリーンインストール(CI 向け)
npm audit # 脆弱性チェック
メリット:
- 追加インストール不要
- エコシステム最大
- ドキュメント豊富
デメリット:
- 速度が他より遅い
- ディスク使用量が多い
yarn
Facebook が2016年に発表した高速・信頼性重視のツール。
バージョンの違い:
- yarn 1 (Classic): 昔ながらの node_modules 方式
- yarn 2+ (Berry): Plug’n’Play (PnP) で node_modules を廃止
主要コマンド:
yarn add package-name # インストール
yarn add -D package-name # 開発依存
yarn global add package-name # グローバル
yarn remove package-name # アンインストール
yarn upgrade # 更新
yarn script-name # スクリプト実行(run 不要)
yarn workspace my-pkg add dep # ワークスペース内で実行
yarn 2+ の PnP モード:
node_modules を生成しない
↓
zip ファイルのまま実行
↓
ディスク I/O が激減
↓
超高速起動
ただし、PnP は一部ライブラリと互換性の問題があるため、導入には注意が必要です。
pnpm(Performant npm)
2017年登場のディスク効率重視ツール。ハードリンクで重複を排除します。
特徴:
- グローバルストア + プロジェクトごとのシンボリックリンク
- node_modules の構造が厳格(phantom dependency を防ぐ)
- モノレポ対応が優秀
主要コマンド:
pnpm install package-name # インストール
pnpm add package-name # 同上
pnpm add -D package-name # 開発依存
pnpm add -g package-name # グローバル
pnpm remove package-name # アンインストール
pnpm update # 更新
pnpm script-name # スクリプト実行
pnpm exec cmd # 実行のみ
pnpm dlx package-name # 一時実行(npx 相当)
node_modules の構造:
node_modules/
├── .pnpm/
│ └── (全パッケージの実体)
├── react -> .pnpm/react@18.2.0/node_modules/react
└── vite -> .pnpm/vite@5.0.0/node_modules/vite
直接依存しているパッケージのみが node_modules 直下に見える「厳格なモード」です。
メリット:
- ディスク使用量が激減
- Phantom dependency のバグを防ぐ
- モノレポで高速
デメリット:
- 一部の古いツールとの互換性問題
- シンボリックリンクを使うため、特殊な環境で問題になる場合
bun
2023年リリースの次世代オールインワンツール。JavaScript ランタイム + パッケージマネージャ + テストランナー + バンドラーを統合しています。
特徴:
- Zig で実装、爆速
- Node.js 互換ランタイム
- 内蔵トランスパイラ(TS/JSX)
- 内蔵テストランナー
- 内蔵バンドラー
主要コマンド:
bun install # インストール(package.json から)
bun add package-name # 追加
bun add -d package-name # 開発依存
bun remove package-name # 削除
bun update # 更新
bun run script-name # スクリプト実行
bun x package-name # 一時実行(npx 相当)
bun test # テスト実行(内蔵)
パフォーマンス:
# bun install は npm install の 6-10倍高速
$ time bun install
0.85 real 0.32 user 0.18 sys
$ time npm install
8.12 real 5.43 user 1.21 sys
詳細は Deno 2 vs Bun vs Node.js 完全比較 の記事も参照してください。
モノレポでの比較
複数パッケージを管理するモノレポ構成での使いやすさ:
| ツール | ワークスペース | 使いやすさ |
|---|---|---|
| pnpm | ネイティブ対応 | ⭐⭐⭐⭐⭐ |
| yarn 3 | ネイティブ対応 | ⭐⭐⭐⭐ |
| npm 7+ | ネイティブ対応 | ⭐⭐⭐ |
| bun | ネイティブ対応 | ⭐⭐⭐⭐ |
pnpm のモノレポ設定
# pnpm-workspace.yaml
packages:
- 'packages/*'
- 'apps/*'
# 特定ワークスペースでコマンド実行
pnpm --filter my-app dev
pnpm --filter "./packages/*" build
CI/CD での使用
GitHub Actions での比較
# npm の場合
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- run: npm ci
- run: npm test
# pnpm の場合
- uses: pnpm/action-setup@v3
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- run: pnpm install --frozen-lockfile
- run: pnpm test
# bun の場合
- uses: oven-sh/setup-bun@v2
- run: bun install --frozen-lockfile
- run: bun test
CI 実行時間の比較(同じプロジェクト):
| ツール | インストール時間 |
|---|---|
| bun | 15秒 |
| pnpm | 35秒 |
| yarn 3 | 52秒 |
| npm | 68秒 |
選び方のガイド
新規プロジェクト
個人開発 / 小規模: → pnpm: ディスク効率と速度のバランス
パフォーマンス重視: → bun: 最速かつ内蔵機能が豊富
無難さ重視: → npm: 追加インストール不要、エコシステム最大
モノレポ: → pnpm: 最も使いやすい
既存プロジェクト
既存プロジェクトでは現在使っているツールを維持するのが無難です。途中で変更すると、lock ファイルの競合や挙動の違いで問題が発生します。
チーム開発
重要: チームメンバー全員が同じツールを使うこと。packageManager フィールドを package.json に明記しましょう。
{
"packageManager": "pnpm@9.0.0"
}
これにより、Corepack 経由で全員が同じバージョンを使えます。
# Corepack の有効化(Node 16.10+)
corepack enable
互換性の注意点
lockファイルの違い
- npm:
package-lock.json - yarn:
yarn.lock - pnpm:
pnpm-lock.yaml - bun:
bun.lockb(バイナリ形式)
複数のlockファイルがあると混乱の原因になります。使っていないものは削除しましょう。
スクリプトの引数渡し
# npm: -- が必要
npm run build -- --watch
# yarn/pnpm/bun: -- 不要
yarn build --watch
pnpm build --watch
bun run build --watch
まとめ
2026年現在のおすすめ:
| 用途 | おすすめ |
|---|---|
| 初心者・無難重視 | npm |
| パフォーマンス重視 | bun または pnpm |
| モノレポ | pnpm |
| 大規模プロジェクト | pnpm |
| 実験的プロジェクト | bun |
結論: 今から新規プロジェクトを始めるなら pnpm が最もバランスが良い選択肢です。bun はさらに高速ですが、まだエコシステムが発展途上なため、本番運用には慎重に判断してください。