npm vs Yarn: CI にはどちらの Node パッケージマネージャを選ぶか
Yarn は npm に改善を促し、今日ではその差はかつてより小さくなっています。とはいえ、lockfile の形式、workspaces、チームの習慣は依然として異なります。
npm は Node に同梱されるデフォルトです。Yarn は代替のパッケージマネージャ(Classic v1 と Berry v2+)で、歴史的に速度、決定論的な install、強力な workspaces で知られています。
| npm | Yarn | |
|---|---|---|
| Node に同梱 | あり | なし (個別にインストール) |
| Lockfile | package-lock.json | yarn.lock |
| CI での install | npm ci | yarn install --immutable |
| Workspaces | あり (基本) | あり (成熟) |
| モダンな機能 | 着実な改善 | PnP、zero-installs (Berry) |
CI において
npm ci は package-lock.json からクリーンで再現可能な install を、追加のセットアップなしで提供します。Yarn は成熟した workspaces を、Berry では Plug'n'Play や zero-installs のような CI を高速化しうる高度な機能を提供します。典型的な repo では性能は近く、選択は生の速度よりも既存の lockfile とチームの慣れによることが多いです。
パイプライン向けの選択
グリーンフィールドや追加ツール不要が欲しいなら npm ci を使う npm。成熟した monorepo workspaces や Berry の機能が必要なら Yarn。どちらでも lockfile を commit し、決定論的な install コマンドを使い、依存関係を cache してください。
結論
同梱でセットアップ不要のデフォルトが欲しいなら npm。成熟した workspaces または Berry の PnP が欲しいなら Yarn。ほとんどの repo で性能は同程度なので、lockfile と workspace のニーズで決めましょう。
関連ガイド
npm vs pnpm: Which Node Package Manager for CI?npm vs pnpm for CI: install speed, disk usage, lockfiles, and monorepo support. Which package manager keeps y…
pnpm vs Yarn: Which Package Manager for CI?pnpm vs Yarn for CI: install speed, disk usage, strictness, and monorepo support. Which Node package manager…
npm ci vs npm install in CI: Which to Usenpm ci vs npm install for CI: reproducibility, speed, and lockfile behavior. Why npm ci is the right choice i…