Pull to refresh

Comments 9

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

Сюда подходит термин Уровень переопределения из БЭМ методологии.
image
Выбираете шаблон проекта: basic или advanced, форкаете себе, потом пишете и комитите туда. Бам!

composer create-project для кого придумали?

Можно и так, это не меняет сути описанного в статье.

Я что-то не понял, а модули чем неугодили?
И в чем разница между копипастом настроек "плагина" и расширения?
Я понимаю, каждый намерен запилить свой велосипед, но сама идея плагина она о другом. Расширения — это по сути то, что мы вставляем внутрь программы, а плагин — это то, что мы прикручиваем​ снаружи. Это совсем разные концепции.

Я что-то не понял, а модули чем неугодили?

Всем угодили. Но это другой уровень организации кода, перпендикулярный расширению.
Модуль — это единица кода, класс. А расширение — это код выделенный в composer-пакет.
Расширение может содержать модули, а может не содержать. И т.д.


И в чем разница между копипастом настроек "плагина" и расширения?

Плагин — это расширение + конфигурация необходимая для его работы.
Composer-config-plugin собирает (мержит) конфиги всех плагинов избавляя от необходимости их копировать.

У меня есть готовый модуль. Его конфигурация сделана в файлах Yii2 шаблона advanced.
Можно подробней, как для модуля использовать Ваш composer-config-plugin?

Если у Вас просто один большой репозиторий и Вы не планируете переиспользовать его части, то composer-config-plugin ни к чему, advanced шабон уже предоставляет удобный и привычный способ сборки конфига.
Но если вы хотите переиспользовать Ваш модуль в разных проектах, план такой:


  • создать расширение содержащее этот модуль, подробнее об этом в документации
  • добавить необходимые конфиги, например: src/config/params.php, scr/config/common.php, src/config/web.php, ...
  • перечислить эти конфиги в composer.json:
    "extra": {
        "config-plugin": {
            "params": "src/config/params.php",
            "common": "src/config/common.php",
            "web": "src/config/web.php"
        }
    }

Всё. Плагин готов. Теперь чтобы использовать его в проекте надо:


  • подключить плагин composer'ом:
    "require": {
        "me/my-plugin": "*@dev"
    }
  • использовать конфиг собранный composer-config-plugin'ом:
    $config = require hiqdev\composer\config\Builder::path('web');
    (new yii\web\Application($config))->run();

    учитывая что в Вашем случае не весь конфиг будет собран composer-config-plugin'ом Вам может понадобиться смержиться с уже имеющимся конфигом, приблизительно так:

    $main_config = [...];
    $plugin_config = require hiqdev\composer\config\Builder::path('web');
    $config = ArrayHelper::merge($plugin_config, $main_config);
    (new yii\web\Application($config))->run();


Sign up to leave a comment.

Articles