Il dibattito eterno
Un monorepo contiene molti progetti in un solo repository; il multi-repo li divide. Entrambi spediscono prodotti su scala.
Cosa offre il monorepo
- Commit atomici cross-progetto.
- Singola fonte di verita.
- Refactoring su larga scala piu facile.
- Tooling unificato.
Cosa costa il monorepo
- La dimensione del repo cresce senza limite.
- Investimento in tooling.
- Granularita di permessi piu difficile.
- CI deve fare build affected-only.
Cosa offre il multi-repo
- Cadenza di release indipendente.
- Repo piu piccoli e focalizzati.
- Confini di permessi naturali.
- Isolamento dei guasti.
Cosa costa il multi-repo
- I cambi cross-repo richiedono PR coordinate.
- Le librerie condivise diventano problemi di versione.
- Il tooling deriva.
- La scopribilita soffre.
Tooling essenziale per monorepo
git sparse-checkout set apps/web shared/ui
git clone --filter=blob:none <url>
npx nx affected:test --base=main
Tool di coordinazione multi-repo
gh repo list myorg --limit 200
for repo in $(gh repo list myorg --json name -q '.[].name'); do
gh pr list -R myorg/$repo
done
Approcci ibridi
- Monorepo per il codice app, repo separati per l'infrastruttura.
- Monorepo per dominio business.
- Multi-repo con un meta-repo di submodule.
Fattori decisionali onesti
- Sotto i 20 ingegneri, multi-repo va bene.
- Sopra i 200 ingegneri, monorepo vince.