than one logical project ▸ These projects are most likely unrelated, loosely connected or can be connected by other means (via dependency) ▸ Google has one single Monstrous Monorepo with 9 millions unique source files.
Unity ▸ Large codebase with multiple modules / components ▸ Share resources within the big repo ▸ No package management per module ▸ No tagged version per module ▸ No independent installation
Lerna handles tasks across multiple packages ▸ One folder per package ▸ Build a generator so all packages have similar structure ▸ Each package defines only its runtime deps ▸ Each package contains required own configurations, such as Babel, eslint etc. But these configuration can be imported from a shared location. ▸ All packages can have their own versions or they can just have one big version in lerna.json
One place to manage CI/CD and release scripts ▸ One place to manage PR ▸ Bootstrap makes linking much easier ▸ Publish makes release much easier ▸ Changes and diff can be tracked easily across packages ▸ You can target single package with —scope ▸ Two modes to manage package versions ▸ Lerna import can absorb existing GitHub repos
friendly to new developers ▸ Bootstrap may take very long time for the first time and longer when it grows bigger ▸ Tests take long time to run if you don’t target a package ▸ Webpack needs to be configured carefully ▸ Who owns this repo?