できない.dev

monorepo

別名: モノレポ / mono repository / monorepository

monorepo は、複数のパッケージ/プロジェクトを 1 つのリポジトリで一元管理する構成。依存の共有やまとめてのバージョン管理がしやすい反面、ビルド範囲やルートディレクトリの指定でつまずきやすい。

公開:

定義

monorepo(モノレポ)は、複数のパッケージやアプリケーションを 1 つのリポジトリでまとめて管理する構成です。
関連する複数プロジェクトを同じ場所でバージョン管理でき、共通の依存やコードを共有しやすくなります。pnpm や npm の workspaces が代表的な仕組みです。

詳細

ルート直下に複数の package を置き、pnpm-workspace.yaml や package.json の workspaces で対象ディレクトリを宣言します。
Turborepo や Nx などのツールを併用すると、変更されたパッケージだけをビルド・テストできます。
CI やデプロイでは「どのディレクトリが対象か」を明示する設定が要になります。

よくある誤解

monorepo は「巨大な単一パッケージ」ではありません。
中身は独立した複数パッケージで、境界と依存関係は保たれます。
1 リポジトリ 1 プロジェクトの polyrepo と対になる考え方で、どちらが優れているかは規模や運用次第です。

関連

デプロイ側の対象ディレクトリ検出でつまずく例は Vercel で monorepo のルートディレクトリが検出されずビルドが失敗する を参照してください。