https://qiita.com/kohashi/items/88d39e2c8bb569d66524

More than 3 years have passed since last update.

Monorepoとは何か

npmで管理する複数のpackageを、まとめて一つのgitリポジトリで管理すること。

具体的に

例えば、 npm上にBabelは108以上のパッケージがある

babelはpluginを追加していくスタイルなので、 babel-core, babel-cli, babel-preset-es2017, babel-preset-flow .... と、たくさんのパッケージがあり npm install babel-preset-flow 等々して取り込んでいく。

従来、npmでは「1リポジトリ=1パッケージ」が標準だったが、多数パッケージを管理するBabelのようなプロジェクトでは多数リポジトリを扱うことになり、混乱が大きい。

そこで、単一リポジトリの /packages 以下にたくさんパッケージを作り(フォルダとpackage.jsonを多数作り)、管理するのがMonorepo。

これ以上は 実際のBabelのpackagesディレクトリ を見たほうが早い。

単一リポジトリの中に多数のパッケージがあるのがわかると思う。

使用しているプロジェクト

Babel, React, Meteor, そして Ember などが採用。 基本的には多数パッケージを扱う巨大フレームワークが採用しているわけですね。

何が利点か

Why is Babel a monorepo によると

利点: