С помощью нового менеджера конфигурации Drupal 8, как я могу предотвратить установку модуля Devel в определенных средах? Насколько я знаю, установить его на свой локальный компьютер означает, что в следующий раз, когда я экспортирую конфигурацию и перенесу ее в другие среды (dev, test, prod), она будет автоматически включена.
8
configuration-management
cambraca
источник
источник
drush
приемлемым? Я узнал на днях оdrush config-export --skip-modules=devel
. Может быть что-то подобное без использования drush, но я не знаю.Ответы:
Метод: Drush
Drush может игнорировать включенные состояния расширений при синхронизации конфигурации.
drush cex --skip-modules=devel
drush cim --skip-modules=devel
С инструментами Drush CMI вы можете работать со списком конфигураций, которые следует игнорировать.
drush cexy --ignore-list=/path/to/config-ignore.yml
drush cimy --delete-list=/path/to/config-ignore.yml
Метод: Модули
Вы можете использовать модуль Configuration Split, который позволяет:
Конфигурация Модуль только для чтения
$settings['config_readonly'] = TRUE;
И еще один модуль - Config Environment, который позволяет вам переопределять конфигурацию для каждой среды.
источник
composer require --dev drupal/devel
. Дополнительным бонусом является то, что установка композитора происходит быстрее, что ускоряет развертывание продукта.Обновление : описанная ниже функция была недавно удалена https://www.drupal.org/project/config_split/issues/2926505
Если вы используете drush в процессе развертывания, вы можете сделать следующее:
Создайте
drushrc.php
файл в том же каталоге, что и вашsettings.php
(например:),docroot/sites/default
и поместите следующее:Это означает, что вы можете манипулировать командами
drush cex
/,drush cim
чтобы пропустить модули во время их обработки.Вы можете прочитать больше об использовании фильтра модуля конфигурации в Drush 8 .
источник
drush cex --skip-modules
был удален в пользу config_split, как объяснено в этом выпуске, поэтому решения, основанные на drush, у меня не сработали.Вот решение, основанное на решении Duncanmoo с использованием модуля config_exclude
1. Установите config_exclude с помощью Composer require --dev и настройте его
разрешить использование settings.php в вашей локальной среде разработки
Добавить настройки config_exclude в локальный файл
вот несколько примеров настроек
ПРИМЕЧАНИЕ 1: config_filter является зависимостью config_exclude, поэтому, если вам не нужен продукт, вы можете исключить его выше
ПРИМЕЧАНИЕ 2: Это
settings.local.php
не требование. Это зависит от того, контролируется ли ваша VCS или нет.2. Композитор требует --dev
При включении модуля, предназначенного исключительно для разработки, используйте флаг --dev:
Это приводит к тому, что эти зависимости добавляются в файл composer.json под require-dev:
Поэтому, если вы устанавливаете сайт БЕЗ ваших модулей разработки, вы используете:
ПРИМЕЧАНИЕ: В вашей промежуточной и рабочей среде вы всегда должны делать --no-dev
3. Используйте Drush Cex, как вы обычно используете
не будет экспортировать ни один из исключенных параметров модулей
ПРИМЕЧАНИЕ. Я заметил, что настройки core.extension , похоже, были изменены после выполнения вышеуказанной команды, но соответствующий .yml никогда не записывается на жесткий диск (даже после подтверждения
will be deleted and replaced with the active config
), поэтому ничего не нужно коммитить, я думаю, это зависит от внутренности модуля config_excludeисточник
В Drupal 8.3.x есть интересная проблема: разрешить модулям разработки отказаться от экспорта конфигурации . Общее мнение заключается в том, что Configuration Split в настоящее время является лучшим решением.
Комментарий от swentel :
Комментарий от geerlingguy :
источник
Разделение конфигурации может быть жизнеспособным решением для некоторых.
https://www.drupal.org/project/config_split
источник
Есть отличный способ сделать это, когда вы в конечном итоге получите для вашего модуля модули dev, зафиксированные в composer для удобства, а конфигурация этих модулей не добавлена в экспорт вашей конфигурации (есть 2 части):
1. Composer require --dev. При включении модуля, предназначенного исключительно для разработки, используйте флаг --dev:
Это приводит к тому, что эти зависимости добавляются в файл composer.json под require-dev:
Поэтому, если вы устанавливаете сайт БЕЗ ваших модулей разработки, вы говорите:
NB: В вашей промежуточной и рабочей среде вы всегда должны делать --no-dev
2. Используйте модуль config_split
Модуль разделения конфигурации позволяет создавать группы экспорта конфигурации, которые можно включить или отключить в среде.
У меня на самом деле есть 3 раскола:
источник
Я сделал небольшой сценарий, чтобы сделать все это одним выстрелом.
источник
Вы также можете увидеть модуль Config Ignore .
источник
Для этого вы можете использовать модуль переопределения развертывания. Прочитайте следующую ссылку для подробного описания:
http://dcycleproject.org/blog/46/continuous-deployment-drupal-style
Однако лучший способ сделать это - отключить модуль на локальном компьютере, а затем экспортировать конфигурацию.
Drupal предоставляет способ переопределения параметров конфигурации в
settings.php
, но они недопустимы для отключения / включения модулей.От
default.settings.php
:источник