
Home
› Technology › npm vs Yarn vs pnpm:仕組みを深掘りしたパッケージマネージャー徹底比較
npm vs Yarn vs pnpm:仕組みを深掘りしたパッケージマネージャー徹底比較
2025.05.08 by
🛠️ npm / Yarn / pnpm 完全比較ガイド
Node.js エコシステムを支える 3 大パッケージマネージャー
npm・Yarn・pnpm。
それぞれ インストール速度・ディスク使用量・Monorepo 対応 などで特色が大きく異なります。
本記事では アーキテクチャ から 実ベンチマーク、
チーム規模ごとのおすすめ選択肢 まで網羅的に解説します。
📊 3 分でわかる早見表
比較項目 | npm | Yarn v2+ (Berry) | pnpm |
---|---|---|---|
初回 install | ★★★☆☆ | ★★★★☆ | ★★★★★ |
再 install | ★★★☆☆ | ★★★★☆ | ★★★★★ |
ディスク効率 | ★★☆☆☆ | ★★★★★ (PnP) | ★★★★★ (CAS) |
Monorepo | ◎ (v7+) | ◎ | ◎ |
Zero-Install | ✕ | ◎ | △ (optional) |
1. npm ― 標準パッケージマネージャー
1.1 仕組みと特徴
- Registry:npmjs.org
package-lock.json
で依存を厳密ロック- v7 で Workspaces を公式サポート
1.2 ディレクトリ構造
node_modules/
react/
react-dom/
project-a/
node_modules/
react/ ← 重複
階層的に依存を複製するため、ディスク使用量が増大しがち。
2. Yarn ― Zero-Install 時代へ
2.1 Yarn v1 (Classic)
yarn.lock
による再現性- 並列 DL で npm より高速
2.2 Yarn v2+ (Berry)
- Plug’n’Play (PnP):
node_modules
廃止 - リポジトリに
.yarn/cache
をコミット → Zero-Install - TypeScript と連携した Constraints で依存の型安全を担保
3. pnpm ― 最速シンボリックリンク方式
3.1 Content-Addressable Store
一度 DL した tarball を CAS に保存し、各プロジェクトは
node_modules
にシンボリックリンクを張るだけ。
同一パッケージはディスクに “1 ファイル” で済む。
3.2 強力な Monorepo 支援
pnpm-workspace.yaml
でワークスペースを定義。
依存関係を静的に解析し、–filter オプションで差分ごとにビルド可能。
⚡ 実測ベンチマーク
# 初回 install (Next.js + 400 deps)
npm : 42.1s
yarn : 31.4s
pnpm : 18.7s
# 再 install (cache hit)
npm : 12.8s
yarn : 8.3s
pnpm : 2.5s
🆚 メリット / デメリット一覧
npm
- ◯ 標準でエコシステム最大互換
- △ ディスク効率が低い
- △ Monorepo は v7 以降限定機能
Yarn
- ◯ PnP による Zero-Install
- ◯ Plugin で拡張性◎
- △ PnP 非対応ライブラリでは手間
pnpm
- ◯ 最速 install & 最小ディスク
- ◯ 正確な peerDependencies 検証
- △ 一部ツールでパス解決パッチが必要
❓ FAQ
- Q. Windows でも pnpm が最速?
-
はい。NTFS のハードリンクが高速に機能します。
--symlink=false
でリンク方式を切り替え可能。 - Q. CI で最もキャッシュが効くのは?
-
pnpm + store キャッシュ が最小サイズ / 最速復元。
Yarn v2 の Zero-Install も リポジトリ容量が許せば 手軽です。
🎯 シチュエーション別おすすめ
- 個人 / 小規模:既定の
npm
で十分 - 大規模 Monorepo:
pnpm
が最速 & ディスク効率◎ - フロントエンド + キャッシュコミット:
Yarn v2 Berry
の Zero-Install - レガシー互換プライオリティ:
npm
かYarn v1
🚩 まとめ
npm は “標準と互換性”
Yarn は “Zero-Install と拡張性”
pnpm は “最速 & 最小ディスク”