レポジトリ
ドキュメント
モノレポとは?

モノレポとは?

モノレポとは、単一のコードベースに多数の異なるアプリケーションとパッケージをまとめたものです。

これとは別に、**ポリレポ**と呼ばれる構成があります。これは、それぞれ個別に公開およびバージョン管理される複数のコードベースです。

コードの共有

ポリレポの場合

ポリレポ構成では、アプリケーション間でコードを共有するプロセスは比較的長くなります。

appdocsshared-utils の3つの別々のリポジトリがあるとします。appdocs はどちらも、npmでパッケージとして公開されている shared-utils に依存しています。

shared-utils のバグが appdocs の両方で重大な問題を引き起こしているとします。あなたは次のことを行う必要があります。

  1. shared-utils でエラーを修正するコミットを作成する
  2. shared-utils 内で publish タスクを実行して、npmに公開する
  3. app で、shared-utils 依存関係のバージョンを上げるコミットを作成する
  4. docs で、shared-utils 依存関係のバージョンを上げるコミットを作成する
  5. これで、appdocs をデプロイできるようになりました。

shared-utils に依存するアプリケーションが多いほど、このプロセスは時間がかかります。非常に面倒な作業になる可能性があります。

モノレポの場合

モノレポ構成では、shared-utils は、appdocs同じコードベース内に存在します。これにより、プロセスが非常に簡素化されます。

  1. shared-utils でエラーを修正するコミットを作成する
  2. これで、appdocs をデプロイできるようになりました。

バージョン管理は必要ありません。なぜなら、appdocs は、npm にある shared-utils のバージョンに依存するのではなく、コードベース内にあるバージョンに依存するからです。

これにより、複数のアプリとパッケージのバグを一度に修正する単一のコミットを作成することが可能になります。これは、チームにとって大きなスピードアップにつながる可能性があります。

モノレポはどのように機能するのですか?

モノレポの主要な構成要素は、ワークスペースです。ビルドする各アプリケーションとパッケージは、独自の package.json を持つ、独自のワークスペース内に配置されます。ガイドから学ぶように、ワークスペースは相互に依存できます。つまり、docs ワークスペースは shared-utils に依存できます。

{
  "dependencies": {
    "shared-utils": "*"
  }
}

ワークスペースは、依存関係をインストールするのと同じ CLI によって管理されます。

ルートワークスペース

また、ルートワークスペース(コードベースのルートフォルダにある package.json)もあります。これは、以下の場合に役立ちます。

  1. モノレポ全体に存在する依存関係を指定する場合
  2. 個々のワークスペースだけでなく、モノレポ全体を操作するタスクを追加する場合
  3. モノレポの使用方法に関するドキュメントを追加する場合