Skip to content
Latchkey

npm vs Yarn: CI にはどちらの Node パッケージマネージャを選ぶか

Yarn は npm に改善を促し、今日ではその差はかつてより小さくなっています。とはいえ、lockfile の形式、workspaces、チームの習慣は依然として異なります。

npm は Node に同梱されるデフォルトです。Yarn は代替のパッケージマネージャ(Classic v1 と Berry v2+)で、歴史的に速度、決定論的な install、強力な workspaces で知られています。

npmYarn
Node に同梱ありなし (個別にインストール)
Lockfilepackage-lock.jsonyarn.lock
CI での installnpm ciyarn 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 のニーズで決めましょう。

関連ガイド