メインコンテンツへスキップ

はじめに

Lernaは、JavaScript/TypeScript用のオリジナルのモノレポツールです。長年にわたり存在し、ReactやJestを含む数万のプロジェクトで使用されています。

JavaScript/TypeScriptモノレポの最大の2つの問題を解決します。

  • Lernaは、任意の数のプロジェクトに対してコマンドを実行し、最も効率的な方法で、正しい順序で実行し、複数のマシンに分散することができます。
  • Lernaは、バージョン管理からNPMへの公開まで、公開プロセスを管理し、あらゆるワークフローに対応できるようにさまざまなオプションを提供します。

Nx(同名のオープンソースビルドシステムの背後にある会社)が、Lernaの管理を引き継ぎました。Nxは、元Google社員によって開発されたビルドシステムであり、Googleの内部ツールで使用されている多くの技術を利用しています。Lerna v5は、この新しい管理下での最初のリリースであり、古いパッケージを更新し、リポジトリ自体のクリーンアップを開始しました。v6以降では、Lernaはタスクスケジューリング作業をNxの実証済みの業界をリードするタスクランナーに委任しています。つまり、lerna runは、キャッシュとコマンド分散のメリットを無料で利用できます。

なぜLernaなのか?

  • 超高速! Lernaは高速であり、他のほとんどの同等のソリューションよりも高速です(詳細については、このベンチマークを参照してください)。なぜ?内部では、Lerna v6+はタスクの実行にNxを使用します。タスクの実行の詳細はこちら
  • 計算キャッシュ - Lernaは、実行しようとしているタスクが過去に実行されたことがあるかどうかを認識しています。実行する代わりに、Lernaはファイルを復元し、ターミナル出力を即座に再生します。さらに、このキャッシュは同僚やCIと共有できます。Lernaを使用すると、組織全体で同じものを2度とビルドまたはテストする必要がなくなります。詳細はこちら »
  • 設定不要の分散タスク実行 Lernaは、単一のマシンで実行する開発エルゴノミクスを維持しながら、設定なしで複数のマシンに任意のコマンドを分散できます。言い換えれば、Lernaでモノレポをスケーリングすることは、ブールフラグを有効にするのと同じくらい簡単です。DTEを有効にすることでCIを20倍高速化できる例をご覧ください。詳細はこちら »
  • 美しいターミナル出力 モノレポには、数百または数千のプロジェクトが含まれる可能性があります。すべてのコマンドですべてを出力すると、何が失敗したか、その理由を把握するのが困難になります。幸いなことに、Lernaははるかに優れた処理を行います。
  • 強力なグラフビジュアライザー Lernaには、ワークスペースの理解を簡素化する強力なインタラクティブビジュアライザーが付属しています。詳細はこちら »
  • NPMへの公開 Lernaは、複数のパッケージをnpmに公開するための究極のツールです。パッケージに独立したバージョンがあるかどうかに関係なく、Lernaは対応できます。詳細はこちら »
  • 導入が簡単 これらの機能にもかかわらず、Lernaは非常に導入が簡単です。ほぼゼロ構成が必要です。方法を見てみませんか?