1
votes

Comment exécuter un script ou une méthode après une installation groupée dans Symfony 4.2?

Je construis un nouveau bundle pour mon application Symfony 4.2 et je veux exécuter un code spécifique une seule fois après l'installation du bundle pour configurer une classe squelette dans le projet racine. Comme le bundle Maker mais sans interaction manuelle. Le bundle installé doit modifier la configuration yaml existante d'un autre bundle (bien sûr, une fois après l'installation).

J'ai essayé d'utiliser la section de script composer.json du bundle sans succès. Je n'ai trouvé aucune référence dans la documentation officielle pour résoudre ce problème.

Existe-t-il une méthode pour résoudre ce problème?


0 commentaires

3 Réponses :


0
votes

Vous devez définir votre script dans composer.json tout en exécutant la commande d'installation ou de mise à jour de composer:

{
    "scripts": {
        "auto-scripts": [
        ],
        "post-install-cmd": [
            "@auto-scripts"
        ],
        "post-update-cmd": [
            "@auto-scripts"
        ]
    }
}

Vous obtiendrez plus de détails dans ce lien


1 commentaires

Ne fonctionnera pas, cela ne peut être inclus que dans le projet; pas dans le package installé.



1
votes

Symfony Flex est un outil permettant d'automatiser l'installation et la suppression de bundles et autres dépendances.

Vous devez ajouter une recette pour votre bundle ici: https://github.com/symfony/recipes-contrib

Si votre groupe est privé, vous pouvez utiliser Dépôt privé de recettes Symfony Flex

Mise à jour: l'approche @Mitesh Vasava ne fonctionnera pas car, tout d'abord, vous devez configurer les scripts manuellement dans le composer.json de votre projet, pas dans le composer.json d'un bundle. Deuxièmement, ces scripts s'exécuteront après chaque installation, pas seulement après l'installation de votre bundle.


0 commentaires

1
votes

Vous pouvez soit créer une recette officielle pour Symfony Flex comme mentionné par @BoShurik, soit créer un plugin de composition, que vous pouvez lire sur ici .

L'approche de base serait de créer un package séparé qui servirait d'installation et qui en aurait besoin dans votre bundle.

Votre plugin peut alors modifier la source comme bon vous semble.


0 commentaires