Skip to content
Latchkey

Lerna対Nx:CIにはどちらのJS monorepoツールか?

LernaはJS monorepoのバージョニングと公開を切り開きました。Nxは強力なキャッシングとタスクオーケストレーションを加えます(そして今ではLernaを保守しています)。

Lernaは、パッケージのバージョニングと公開で知られる古典的なJavaScript monorepoツールです。Nxは、計算のキャッシング、影響検出、ジェネレータを備えた、より広範なmonorepoプラットフォームです。注目すべきは、Nrwl(Nxのチーム)がLernaの保守を引き継ぎ、モダンなLernaが内部でNxのタスクランナーを使えることです。

LernaNx
中核となる強みバージョニング + 公開キャッシング + タスクオーケストレーション
タスクのキャッシングNx統合経由ネイティブ(local + remote)
影響検出限定的(今はNx駆動)ネイティブのプロジェクトグラフ
ジェネレータ / プラグインなし広範
関係Nxチームが保守該当なし

CIにおいて

CIでの純粋な速度 - タスク出力をcacheし、影響を受けたプロジェクトだけを実行し、リモートcacheを共有する - では、Nxがより強力なエンジンであり、モダンなLernaはその恩恵を得るためにタスク実行をNxに委任できます。Lernaの不変の価値は、マルチパッケージリポジトリのためのバージョニングと公開のワークフローです。多くのチームはbuild/testのグラフにNxを使い、協調的なバージョン更新とnpm公開のためにLernaを特に残しています。

pipelineのための選択

キャッシングとジェネレータを備えた、影響を受けたものだけの高速なbuildを望むなら:Nx。洗練されたマルチパッケージのバージョニングと公開が必要なら:Lerna(今はタスクにNxを使います)。共有された保守とNxに支えられたタスク実行を考えると、厳密にどちらか一方ではありません。

結論

最も強力なキャッシングとタスクオーケストレーションを望むなら:Nx。多数のパッケージに対する成熟したバージョニング/公開が必要なら:Lerna(Nx経由でタスクを実行できます)。両者は今や重なり合っています - buildにはNx、リリースにはLernaを、両方必要なら使いましょう。

関連ガイド