Un monorepo est une stratégie de gestion de code source qui consiste à regrouper plusieurs projets, applications ou bibliothèques dans un même dépôt Git, par opposition au polyrepo (un dépôt par projet). Google, Meta et Microsoft utilisent des monorepos massifs pour gérer des milliers de projets interconnectés.
Les avantages principaux sont la cohérence et la simplicité des dépendances internes. Quand deux modules partagent du code, la modification est atomique : un seul commit met à jour le module partagé et tous ses consommateurs. Les refactorings transversaux sont plus simples, le partage de configuration (linting, CI, formatage) est naturel, et il n'y a qu'un seul historique Git à consulter.
En contrepartie, un monorepo exige des outils adaptés : systèmes de build incrémental (Turborepo, Nx, Bazel) pour ne compiler que ce qui a changé, stratégies de CI ciblées pour éviter de tout tester à chaque commit, et conventions strictes pour maintenir la lisibilité. Pour une PME avec 2-3 applications liées (frontend, API, outils internes), le monorepo est souvent le bon choix. Au-delà de 10 équipes, l'investissement en outillage devient significatif.