Les dépendances locales récursives dans un projet Composer
Dans un précédent billet, j’ai parlé de comment il était possible de gérer les dépendances PHP dans un projet monorepo avec Composer. Si vous avez testé la méthode décrite, vous avez peut-être rencontré des difficultés lorsqu’une dépendance de votre projet a elle-même une dépendance dans le même dépôt.
Par exemple, si je développe un site e-commerce avec un composant Cart
pour la
gestion du panier et que je souhaite implémenter ce dernier dans une application
Symfony. Je peux alors être tenté de créer un CartBundle
qui sera intégré dans
l’application principale.
On aurait l’arborescence ci-dessous :
Le fonctionnement de Composer dans ce cas est clairement expliqué dans
la documentation:
les repositories
ne sont pas chargés récursivement. En effet, Composer estime
que ce paramètre de configuration est exceptionnel et doit être utilisé de
manière temporaire.
Pour pallier ce problème, vous devrez spécifier explicitement les sous dépendances dans la configuration votre application principale.
Heureusement, pour éviter d’avoir à spécifier tous les répertoires contenant nos
dépendances, Composer autorise l’utlisation de “wildcard” tel que *
et ?
.
Ainsi le fichier composer.json
de notre application pourrait ressembler à :