https://qiita.com/kohashi/items/88d39e2c8bb569d66524
More than 3 years have passed since last update.
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 などが採用。 基本的には多数パッケージを扱う巨大フレームワークが採用しているわけですね。
利点: