Skip to content
Latchkey

moonrepo vs Nx: CIにはどちらのmonorepoツールか?

Nxは成熟したJS中心のmonorepoプラットフォーム。moonrepoはRustベースの言語非依存なtask runnerで、toolchainも管理する。

Nxはcache、generator、大きなpluginエコシステムを備えた機能豊富なmonorepoビルドシステムで、JS/TSの世界で最も強い。moonrepo (moon) はRustベースのtask runnerかつビルドシステムで、言語非依存になるよう設計され、組み込みのtoolchain管理とリモートcacheを備える。

moonrepoNx
実装RustJavaScript/TypeScript
言語の焦点言語非依存JS/TS中心 (plugin次第でそれ以上)
toolchain管理組み込みplugin/外部経由
cacheローカル + リモートローカル + リモート
エコシステムの成熟度より新しく、成長中大きく、成熟

CIにおいて

両者は同じ方法でCI時間を削減する - taskの出力をcacheし、影響を受けたプロジェクトのみを実行する。Nxはより成熟したプラットフォームで、最も深いJS/TSツール、generator、pluginを持つ。moonrepoはポリグロットrepoにとって魅力的だ: 設計上言語非依存で、プロジェクトごとにツールのバージョンを固定できる組み込みのtoolchain管理を備える。豊富なJS/TSプラットフォームにはNx、より軽量で言語非依存なrunnerにはmoonrepoを選ぶ。

高速化する

どちらのツールでもリモートcacheをCI jobをまたいで有効化し、影響を受けたプロジェクトに絞る - 最大の高速化だ。cache missで実行されるtaskはCI runnerで動く。高速なマネージドrunnerがそれらを短縮する。

結論

成熟したJS/TSに強いmonorepoプラットフォームが欲しい: Nx。組み込みのtoolchain管理を備えた言語非依存なRust製task runnerが欲しい: moonrepo。どちらでもリモートcacheと影響を受けた分のみの実行を有効化する。

関連ガイド