CI での npm vs Yarn vs pnpm: 速度、ディスク、信頼性
CI では、パッケージマネージャーの選択がインストール時間、ディスク、cache ヒット率に他のどこよりも影響します。
3 つとも Node の依存関係をインストールしますが、速度、ディスク使用量、CI での cache のしやすさが異なります。
| npm | Yarn | pnpm | |
|---|---|---|---|
| CI のインストールコマンド | npm ci | yarn --frozen-lockfile | pnpm i --frozen-lockfile |
| ディスク使用量 | 多い | 多い | 少ない (コンテンツアドレス型ストア) |
| 一般的な速度 | 基準 | 高速 | ウォームストアで最速 |
| デフォルトで厳格 | 緩い | 緩い | 厳格 (ファントム依存なし) |
特に CI では
pnpm はコンテンツアドレス型ストアのおかげで速度とディスクで通常勝ち、リソースの限られた runner で効いてきます。npm はセットアップ不要で最も安全なデフォルトです。Yarn (特に Berry/PnP) は高速ですが、設定のニュアンスが増えます。
どちらにしても cache する
どれを選んでも、lockfile をキーにしてストアを cache してください - それがツール選びよりも大きな高速化になります。
結論
最大の CI 速度と少ないディスクが欲しい: pnpm。設定不要の安全性が欲しい: npm。どれを使っても、cache とより速い runner の方がツール選びより重要です。
関連ガイド
How to Cache Dependencies in GitHub Actions (Every Ecosystem)Cache dependencies in GitHub Actions with actions/cache - correct keys and paths for npm, yarn, pnpm, pip, Ma…
npm ERESOLVE "unable to resolve dependency tree" - Fix Peer ConflictsFix npm ERESOLVE "unable to resolve dependency tree" peer dependency conflicts in CI - properly, without blin…
How to Speed Up GitHub Actions: 9 High-Impact TacticsMake GitHub Actions faster: caching, parallelization, test splitting, Docker layer caching, slimmer images, a…