Skip to content
Latchkey

Nx vs Turborepo(CI向け): どちらのmonorepoツールが速いか?

どちらもタスクのcacheと変更影響分のみの実行でmonorepoのCIを高速化します。Nxはより重厚でプラグイン豊富なプラットフォーム、Turborepoはより軽量でconfigが少ないツールです。

Nxはgenerator、プラグイン、タスクグラフ、計算cache(ローカルとリモート)を備えたフル機能のmonorepo buildシステムです。Turborepoは、最小限の設定で高速かつcacheされたpipelineに特化した、より軽量なtask runnerです。

NxTurborepo
スコープフルプラットフォーム(プラグイン、generator)task runner + cache
タスク/計算cacheあり(ローカル + リモート)あり(ローカル + リモート)
affected/変更分のみの実行あり(nx affected)あり(filtering)
configの重さ重め、機能が多い軽め、最小限
最適な用途大規模・多言語のmonorepoシンプルさを求めるJS/TSのmonorepo

CIでは

どちらも同じ方法でCI時間を削減します。タスクの出力をcacheし、変更の影響を受けるプロジェクトだけを実行するため、変更のないパッケージは再buildも再テストもされません。CIのjob間で共有されるリモートcacheが、どちらにとっても最大の単一高速化要因です。Nxはより設定の重さと引き換えに、より豊富なプラットフォーム(プラグイン、generator、言語サポート)を提供します。Turborepoはより軽量で、JS/TSのmonorepoに素早く導入できます。

高速化する

リモートcacheを有効にしてCI実行間で永続化し、タスクを影響を受けるプロジェクトに絞りましょう。どちらもCIのrunner上で動作します。高速なマネージドrunnerは、cache missでまだ実行しなければならないタスクを短縮します。

結論

プラグインと多言語サポートを備えたフル機能のmonorepoプラットフォームが欲しいなら: Nx。JS/TS向けの軽量でconfigの少ないcache済みtask runnerが欲しいなら: Turborepo。どちらでもリモートcacheと影響分のみの実行を有効にしましょう。

関連ガイド