À retenir
- Un seul dépôt pour plusieurs projets ou composants.
- Facilite le partage de code et la mise à jour globale des outils.
- Nécessite des outils spécifiques pour ne pas ralentir le travail des développeurs.
Le monorepo est une stratégie d'organisation qui consiste à regrouper le code source de plusieurs projets au sein d'un seul et unique dépôt (repository). Imaginez une grande bibliothèque partagée où, au lieu d'avoir un bâtiment séparé pour chaque genre littéraire, tous les livres de l'entreprise sont rangés dans les rayons d'un même édifice pour faciliter les échanges et la cohérence.
Étymologie
Contraction de l'anglais mono (unique) et repository (dépôt). Ce terme est apparu pour décrire les pratiques de géants du Web comme Google ou Facebook qui gèrent des millions de lignes de code dans une structure centralisée plutôt que de disperser leurs outils dans des centaines de petits dossiers isolés.
Exemples d'usage
- Une entreprise qui place son application mobile, son site web et ses outils d'administration dans un seul projet Git.
- L'utilisation d'outils comme
Nx,TurborepoouLernapour gérer les dépendances entre plusieurs modules JavaScript stockés ensemble.
Cas d'usage
On utilise le monorepo principalement dans le développement logiciel moderne (Fullstack) pour partager facilement du code entre le front-end et le back-end, ou dans les grandes organisations pour garantir que tous les développeurs utilisent les mêmes versions des bibliothèques internes.
Bonnes pratiques
Il est crucial d'utiliser des outils de gestion de builds intelligents qui ne re-compilent que les parties du code ayant été modifiées. Il faut également veiller à maintenir une structure de dossiers rigoureuse pour éviter que le projet ne devienne un labyrinthe illisible.
Synonymes
Antonymes
Conseil
Si vous débutez sur un petit projet personnel, restez sur un dépôt classique. Le monorepo devient réellement utile dès que vous commencez à copier-coller du code entre deux projets différents : c'est le signal qu'il est temps de les regrouper.
Questions fréquentes
Est-ce la même chose qu'une architecture monolithique ?
Non. Le monorepo concerne le stockage du code (l'organisation des dossiers), tandis qu'un monolithe concerne le fonctionnement de l'application (un seul bloc qui s'exécute).on peut avoir un monorepo qui contient des microservices.
Pourquoi ne pas simplement faire plusieurs dépôts ?
Le 'polyrepo' oblige souvent à gérer de nombreuses versions de bibliothèques en même temps, ce qui peut devenir un casse-tête technique lors des mises à jour.