Comments 9
Извиняюсь, всё придумал сам, терминологии подходящей не нашёл, пришлось велосипедить, буду признателен за лучшие варианты.
Сюда подходит термин Уровень переопределения из БЭМ методологии.
Выбираете шаблон проекта: basic или advanced, форкаете себе, потом пишете и комитите туда. Бам!
composer create-project для кого придумали?
Я что-то не понял, а модули чем неугодили?
И в чем разница между копипастом настроек "плагина" и расширения?
Я понимаю, каждый намерен запилить свой велосипед, но сама идея плагина она о другом. Расширения — это по сути то, что мы вставляем внутрь программы, а плагин — это то, что мы прикручиваем снаружи. Это совсем разные концепции.
Я что-то не понял, а модули чем неугодили?
Всем угодили. Но это другой уровень организации кода, перпендикулярный расширению.
Модуль — это единица кода, класс. А расширение — это код выделенный в composer-пакет.
Расширение может содержать модули, а может не содержать. И т.д.
И в чем разница между копипастом настроек "плагина" и расширения?
Плагин — это расширение + конфигурация необходимая для его работы.
Composer-config-plugin собирает (мержит) конфиги всех плагинов избавляя от необходимости их копировать.
Можно подробней, как для модуля использовать Ваш 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();
Пример такого плагина (с модулем) — yii2-module-pages
Альтернативная организация проекта на Yii2