Monorepo : Gérer plusieurs projets dans un seul repository

Guide monorepo : avantages, Turborepo, Nx, structure, shared packages et CI/CD pour gérer plusieurs projets.

Monorepo : un repo pour les gouverner tous

Un monorepo héberge plusieurs projets (apps, packages, services) dans un seul repository Git. Google, Meta, Microsoft utilisent cette approche à grande échelle. Les outils modernes rendent les monorepos accessibles à tous. Chez Eve Media, nous utilisons les monorepos pour nos projets fullstack.

Monorepo vs polyrepo

Le polyrepo (un repo par projet) isole mais fragmente. Les mises à jour de shared code nécessitent plusieurs PRs. Le monorepo unifie : un commit peut mettre à jour l’app, l’API et les packages partagés ensemble.

Avantages du monorepo

Atomic commits : modifiez frontend et backend ensemble. Partage de code facilité : les packages internes sont importés directement. Refactoring simplifié : renommez partout en un seul PR. Cohérence : même config, mêmes standards partout.

Les outils modernes

Turborepo (Vercel), Nx, pnpm workspaces, Yarn workspaces sont les solutions populaires. Ils gèrent le caching des builds, l’exécution parallèle des tasks, les dépendances entre packages.

Turborepo

Turborepo excelle en simplicité et performance. Le remote caching partage les builds entre développeurs et CI. L’exécution des tasks respecte le graph de dépendances. Configuration minimale pour démarrer.

Nx

Nx est plus complet avec des generators, des plugins pour chaque framework, et une analyse avancée des dépendances. Plus de setup mais plus de puissance pour les très grands monorepos.

Structure typique

apps/ contient les applications (web, mobile, API). packages/ contient le code partagé (ui, utils, config). La racine a le package.json principal et les configs partagées. Chaque sous-projet a son propre package.json.

Shared packages

Créez des packages pour le code réutilisé : composants UI, utilitaires, types TypeScript, config ESLint/Prettier. Ces packages sont versionnés ensemble et toujours synchronisés.

CI/CD en monorepo

Le CI doit être intelligent : ne pas tout rebuilder à chaque commit. Turborepo et Nx détectent les packages affectés par un changement. Seuls les tests et builds nécessaires sont exécutés.

Défis du monorepo

Le repo peut devenir gros (Git scale bien mais les IDE moins). Les permissions granulaires sont plus complexes (CODEOWNERS aide). La courbe d’apprentissage des outils existe mais est rentabilisée.

Quand choisir le monorepo

Projets avec du code partagé entre apps. Équipes qui travaillent sur plusieurs parties du système. Stacks homogènes (tout en TypeScript par exemple). Pour des projets vraiment indépendants, le polyrepo peut être plus simple.

Conclusion

Le monorepo est une approche puissante pour les projets modernes, surtout en TypeScript où le partage de types est précieux. Les outils actuels ont résolu les problèmes historiques de performance.

Chez Eve Media, nous structurons nos projets en monorepo quand approprié. Contactez-nous pour vos architectures de code.

Partager sur :

Autres

Audit Digital & SEO

Audit Digital & SEO

Audit Digital & SEO : Optimisez Votre Présence et Vos Performances Web Avoir un site internet esthétique est une première étape, mais s’assurer qu’il soit

Éco-conception de Sites Internet

Éco-conception de Sites Internet : Allier Performance Numérique et Responsabilité Écologique L’éco-conception des sites web est une démarche essentielle pour créer des plateformes numériques performantes

Envoyer un message

WhatsApp