Nx vs Lerna: CIにはどちらのmonorepoツールか?
Nxはcacheと影響を受けた分の実行を備えた完全なmonorepoビルドプラットフォーム。Lernaはバージョニングと公開に注力し - 現代のLernaは内部でNx上で動く。
Nxはtaskグラフ、計算のcache (ローカルとリモート)、generator、pluginを備えた機能豊富なmonorepoシステムである。Lernaはmonorepoのバージョニングと公開を管理する。NxチームがLernaを引き継いで以来、現代のLernaはtaskの実行にNxを使う。
| Nx | Lerna | |
|---|---|---|
| スコープ | ビルドプラットフォーム (cache、plugin) | バージョニング + 公開 |
| task/計算のcache | あり (ローカル + リモート) | Nx経由 (現代のLerna) |
| 影響を受けた分の実行 | あり (nx affected) | あり (Nx経由) |
| 公開 | 外部 / plugin | 中核機能 |
| 関係 | 現代のLernaを駆動 | 今やNx上に構築 |
CIにおいて
cache、taskグラフ、影響を受けた分のみの実行には、Nxがエンジンであり - 現代のLernaはすでに内部でそれを使っている。Lernaの独自の強みは、依然として協調的なバージョニングと公開にある。多くのチームは高速なCI taskにNx、releaseにLernaを使うか、あるいはNx単体に別の公開ステップを組み合わせる。両者は今や競うよりも協調する。
高速化する
NxのリモートcacheをCI jobをまたいで有効化し、影響を受けたプロジェクトに絞る - 最大の高速化だ。cache missで依然として実行されるtaskはCI runnerで動く。高速なマネージドrunnerがそれらを短縮する。
結論
cacheと影響を受けた分の実行を備えた完全なmonorepoビルドプラットフォームが欲しい: Nx。協調的なバージョニングと公開が必要: Lerna (これは今やNx上で動く)。多くのmonorepoはtaskにNx、releaseにLernaを使う。
関連ガイド
Nx vs Turborepo for CI: Which Monorepo Tool Is Faster?Nx vs Turborepo for CI: task caching, affected builds, remote cache, and config. Which monorepo build orchest…
Turborepo vs Lerna: Which Monorepo Tool for CI?Turborepo vs Lerna for CI: task caching and affected runs vs versioning and publishing. How the two monorepo…
Lerna vs Nx: Which JS Monorepo Tool for CI?Lerna vs Nx for JS monorepos in CI: versioning, publishing, task caching, and affected runs. Which tool fits…