Skip to content
Latchkey

CI における Yarn vs pnpm: どちらのパッケージマネージャが速いか

どちらも素の npm を速度で上回りますが、Yarn(特に PnP を備えた Berry)と pnpm は、高速で再現可能な install に至るために異なる道を取ります。

Yarn は成熟したパッケージマネージャです。Yarn Berry(v2+)は node_modules を完全にスキップする Plug'n'Play を追加します。pnpm はハードリンクを用いたコンテンツアドレス方式の store と、厳格で非フラットなレイアウトを使います。

Yarnpnpm
インストールモデルnode_modules または PnP (Berry)リンクされたコンテンツ store
インストール速度高速高速 (しばしば最速)
Lockfileyarn.lockpnpm-lock.yaml
CI での installyarn install --immutablepnpm install --frozen-lockfile
厳格さより緩い (Classic) / 厳格 (PnP)デフォルトで厳格

CI において

pnpm は通常最速で、最小のディスクフットプリントと厳格な解決を標準で備えます。Yarn Berry の PnP も非常に高速で cache に優しくなり得ますが、PnP はときにパッケージ互換性のための shim を必要とします。Yarn Classic は安定して広く使われていますが、モダンな両オプションより遅いです。再現性のために CI では immutable/frozen フラグを選んでください。

正しいものを cache する

pnpm の store、または Yarn の cache/.yarn ディレクトリを lockfile でキーづけして cache してください。両者とも CI runner 上で同一に動作し、重い install をより高速なマネージド runner に任せることで、job の最も遅い部分を短縮できます。

結論

最速の install と最小限の手間での厳格さが欲しいなら pnpm。すでに Yarn を使っていて PnP の zero-install cache モデルが欲しいなら Yarn Berry。どちらでも lockfile を commit し、immutable/frozen フラグを使ってください。

関連ガイド