パッケージマネージャは『開発速度』を左右する基盤
2026年は pnpm が急速にデファクト化、Bun も追い上げ中です。本記事では編集部の視点で、主要4種類の選び方を公開情報をもとに整理します。Node.js 本番運用 もご参考に。
4種類の特徴
(1) npm:Node 標準・互換性最強・速度は遅め。(2) pnpm:ディスク効率・速度両立・Workspaces 強力。(3) yarn (Berry):PnP モード・Plug n Play。(4) Bun:超高速・Bun runtime と統合。(5) 判断軸:速度+互換性+チーム慣れ。
pnpm の特徴と推奨理由
(1) ハードリンク+シンボリックリンクでディスク節約。(2) 厳密な依存解決:phantom dependency 防止。(3) Workspaces:Monorepo に強い。(4) npm より2〜3倍速い(公開情報をもとに)。(5) 2024年以降採用増加。Monorepo 設計 もご参考に。
Bun の速さと制約
(1) インストール速度:pnpm の数倍。(2) Bun runtime と統合:bun install + bun run。(3) npm 互換:package.json そのまま。(4) 新しい:一部パッケージで互換性問題。(5) 本番採用は段階的。Bun-Deno 実践 もご参考に。
npm の継続選択肢
(1) Node 標準:何もインストール不要。(2) workspaces:v7 から対応。(3) npm ci:再現性ある CI 実行。(4) 速度が問題ならpnpm へ移行。(5) 互換性で迷わない:万能解。
lockfile の扱い
(1) package-lock.json:npm。(2) pnpm-lock.yaml:pnpm。(3) yarn.lock:yarn。(4) bun.lockb:Bun(バイナリ)。(5) 必ずコミット:再現性のため。チームで1つに統一が必須です。
CI/CD での使い分け
(1) npm ci / pnpm install --frozen-lockfile:厳密インストール。(2) キャッシュ活用:node_modules キャッシュ。(3) GitHub Actions の setup-node:cache 対応。(4) Docker のレイヤーキャッシュ:依存ファイルファースト。(5) pnpm/store:パイプライン全体で共有可能。CI/CD 実践 もご参考に。
失敗しがちなパターン
(1) 異なるマネージャ混在:lockfile 競合。(2> lockfile を gitignore:再現性なし。(3) node_modules 直接編集:ロック効かず。(4) 本番で npm install:ロックを無視。(5) 古いマネージャ放置:脆弱性リスク。対策は、(1)チーム1つ統一、(2)コミット必須、(3)patch-package、(4)npm ci相当、(5)定期更新、です。