Установка Symfony, как запретить создавать базовые файлы конфигураций?

При установке Symfony, по умолчанию, создаются базовые файлы конфигурации, такие как config.yaml или security.yaml. Однако, в определенных случаях, вы можете захотеть запретить создание этих файлов при установке Symfony. Существуют несколько подходов к достижению этой цели.

1. Использование опций команды new. При установке Symfony с помощью composer create-project symfony/skeleton, вы можете использовать опцию --no-scripts, чтобы отключить выполнение скриптов после установки. Например:

composer create-project symfony/skeleton myproject --no-scripts

Это предотвратит создание файлов конфигурации, поскольку их создание осуществляется с помощью скриптов.

2. Использование файла composer.json. Вы можете изменить содержимое файла composer.json, чтобы добавить директиву "scripts": [] в раздел "extra". Вот пример:

{
    "name": "myproject",
    "require": {
        "symfony/skeleton": "^5.0"
    },
    "extra": {
        "symfony": {
            "allow-contrib": false,
            "scripts": []
        }
    }
}

Это также предотвратит выполнение скриптов после установки и, следовательно, создание файлов конфигурации.

3. Использование событий Composer. Composer предоставляет механизм событий, который позволяет выполнять действия перед и после выполнения определенных команд. Вы можете создать свой собственный плагин Composer, который будет обрабатывать событие post-create-project-cmd и удалять нежелательные файлы конфигурации после установки Symfony. Вот пример такого плагина:

<?php

use ComposerScriptEvent;

class RemoveConfigFiles
{
    public static function removeConfigs(Event $event)
    {
        $vendorDir = $event->getComposer()->getConfig()->get('vendor-dir');
        
        $configFiles = [
            $vendorDir.'/symfony/webpack-encore-bundle/Resources/config/config.yaml',
            // Другие нежелательные файлы конфигурации
        ];
        
        foreach ($configFiles as $file) {
            if (file_exists($file)) {
                unlink($file);
            }
        }
    }
}

Этот плагин должен быть зарегистрирован в файле composer.json:

{
    "name": "myproject",
    "require": {
        "symfony/skeleton": "^5.0"
    },
    "scripts": {
        "post-create-project-cmd": "RemoveConfigFiles::removeConfigs"
    }
}

Таким образом, при выполнении команды composer create-project symfony/skeleton myproject, нежелательные файлы конфигурации будут удалены после установки.

В любом случае, помните, что удаление базовых файлов конфигурации может привести к некорректной работе Symfony. Если вы хотите полностью исключить возможность создания этих файлов в будущем, рекомендуется использовать один из описанных подходов.