Turborepo + PNPM — structurer un monorepo PHP/JS hybride
Photo by Safar Safarov on Unsplash
Retour d'expérience détaillé sur la gestion d'un monorepo hybride PHP/JS avec Turborepo + PNPM — pattern adopté sur le projet Monwoo depuis 2024.
Photo by Gabriel Heinzer on Unsplash
Structure réelle : 4 apps Symfony (miguel.monwoo.com, mws-funnel, claude-mws-timings, moon-water-cycle-v2), 2 apps SvelteKit (info.monwoo.com, atoutconseil-crm), 15 packages partagés (mws-blog, mws-stripe, mws-pwa-game, mws-sf-pdf-billings, etc.).
Ce deep dive couvre :
- La différence conceptuelle apps vs packages (intégrateurs vs business logic) et pourquoi c'est le garde-fou anti-spaghetti.
- Le turbo.json pipeline : build → test → lint → e2e, avec cache Turborepo pour ré-exécuter uniquement ce qui a changé.
- La résolution PNPM workspace:* pour partager du code sans publier sur npm ni symlink manuel.
- L'intégration Composer + PNPM dans le même monorepo : build-links pour que Symfony voit les packages PHP du workspace.
- Les tests Playwright cross-app qui démarrent miguel + info + cockpit simultanément et valident les liens entre eux.
- Le pipeline deploy : un seul
./deploy/build.shproduit 3 ZIPs FTP pour 3 domaines différents depuis la même source.
Article privé
Accédez à l'intégralité de cet article et à tous les deep dives R&D Monwoo.
Deja abonne ?