Как запустить скрипт или метод после установки пакета в Symfony 4.2? - PullRequest
0 голосов
/ 26 апреля 2019

Я создаю новый пакет для своего приложения Symfony 4.2 и хочу запустить определенный код только один раз после установки пакета, чтобы настроить некоторый класс скелета в корневом проекте. Как производитель, но без ручного взаимодействия. Установленный пакет должен изменить существующую конфигурацию yaml другого пакета (конечно, один раз после установки).

Я безуспешно пытался использовать раздел сценариев composer.json в комплекте. Я не нашел никаких ссылок в официальной документации, как решить эту проблему.

Есть ли способ решить эту проблему?

Ответы [ 3 ]

1 голос
/ 26 апреля 2019

Symfony Flex - это инструмент для автоматизации установки и удаления пакетов и других зависимостей.

Вам нужно добавить рецепт для вашего пакета здесь: https://github.com/symfony/recipes-contrib

Если ваш пакет закрыт, вы можете использовать Личное хранилище рецептов Symfony Flex

Обновление: @ Mitesh Vasava * Подход 1015 * не будет работать, потому что, прежде всего, вам нужно вручную настроить скрипты в composer.json вашего проекта, а не в composer.json пакета. Во-вторых, эти сценарии будут запускаться после каждой установки, а не только после установки вашего пакета.

1 голос
/ 29 апреля 2019

Вы можете либо создать официальный рецепт Symfony Flex, как упомянуто @BoShurik, либо создать плагин для композитора, о котором вы можете прочитать здесь .

Основной подход заключается в создании отдельного пакета, который будет служить установщиком, а затем потребовать его в вашем комплекте.

Ваш плагин может изменить источник по своему усмотрению.

0 голосов
/ 26 апреля 2019

Вы должны определить свой скрипт в composer.json при выполнении команды composer install или update:

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

Более подробную информацию вы получите по этой ссылке

...