Альтернативные наборы конфигураций
August 15, 2020 · View on GitHub
Composer Config Plugin поддерживает создание альтернативных наборов конфигураций на базе основного. Это позволяет собрать конфигурации нескольких приложений в рамках одного проекта выделив общую часть.
Как это работает?
Основной набор конфигураций объединяется с альтернативным, собирается и размещается в отдельной папке.
Настройка
В extra-опции config-plugin-alternatives указываются альтернативные наборы в формате:
"extra": {
"config-plugin": {
"params": "config/params.php",
"web": "config/web.php",
...
},
"config-plugin-alternatives": {
"alfa": {
"params": "config/alfa/params.php",
"main": [
"$web"
"config/alfa/main.php"
]
},
"beta": {
"main": "config/beta/main.php
}
}
},
При настройке вы можете использовать для объединения конфигурации как из текущего,
так и из основного набора (например, в наборе alfa используется конфигурация $web из основного набора).
Для загрузки альтернативных конфигураций в вашем приложении используйте require:
$config = require Yiisoft\Composer\Config\Builder::path('alfa/main');
Параметры $params в альтернативных наборах
Если в альтернативном наборе вы укажете параметры params, то они будут объединены с params
из основного набора и использованы при сборке всех конфигураций в рамках текущего набора.
Пример
Extra-опции в composer.json:
"extra": {
"config-plugin": {
"params": "config/params.php",
"web": "config/web.php",
"providers": "config/providers.php"
},
"config-plugin-alternatives": {
"alfa": {
"params": "config/alfa/params.php",
"main": [
"$web"
"config/alfa/main.php"
],
"providers: "config/alfa/providers.php"
}
}
},
Собранные конфигурации в vendor/yiisoft/composer-config-plugin-output/:
# Основной набор
/params.php
/web.php
/providers.php
# Альтернативный набор alfa
/alfa/params.php
/alfa/web.php
/alfa/main.php
/alfa/providers.php
Объяснение результата
Альтернативный набор alfa:
- Для сборки всех конфигураций набора будут использованы параметры из основного набора, объединённые с
config/alfa/params.php. - Конфигурация
/alfa/web.phpбудет взята из основного набора. - Конфигурация
/alfa/main.phpбудет собрана из конфигурацииwebиз основного набора иconfig/alfa/main.php. - Конфигурация
/alfa/providers.phpбудет собрана из конфигурацииprovidersиз основного набора иconfig/alfa/providers.php.