Quando o Xulispa me apresentou esse módulo eu fiquei muito feliz, fui brincar com ele na mesma hora. O motivo da euforia é que ele automatiza vários processos que aumentam minha produtividade quando estou trabalhando com configurações.
Vou exemplificar neste artigo como eu vou usar ele a partir de agora para otimizar meu trabalho e acredito que ele vai ajudar você também.
Instalação e configuração
Se você usa o composer, basta rodar composer require drupal/config_devel. Você também pode baixar na página do módulo.
Para habilitar, basta rodar drush en config_devel -y ou fazê-lo pela interface, em /admin/extend. A configuração é feita em /admin/config/development/config_devel e é bem simples: basta inserir nos campos os caminhos para os arquivos que se quer fazer a importação ou exportação automática. Esses caminhos devem ser relativos ao root do Drupal, então como eu guardo as configurações fora da instalação numa pasta config, meus caminhos ficarão assim:
Alterando uma configuração pela interface
Quando se altera uma configuração administrativa no Drupal, é preciso fazer a exportação dessa configuração para poder versioná-la. Este processo, porém, costuma ser custoso. Isso porque ainda é feito de forma manual: tenho que saber exatamente qual configuração quero e selecionar ela para a exportação e versionamento. Não seria muito melhor se houvesse um diff do que foi alterado?
Pois essa é uma das funcionalidades que o módulo oferece e que eu considero aumentar minha produtividade. Na imagem acima, o campo “Auto Export” representa as configurações que eu quero que sejam automaticamente exportadas quando alteradas pela interface.
Como é também possível ver na imagem acima, eu escolhi o arquivo de configuração do menu principal para ser atualizado automaticamente. O código dele está assim:
langcode: pt-br status: true dependencies: { } id: main label: 'Main navigation' description: 'Site section links' locked: true
Após alterar o título e a descrição do menu via interface (/admin/structure/menu/manage/main), não será mais necessário exportar a configuração. O arquivo ficará automaticamente assim:
langcode: pt-br status: true dependencies: { } id: main label: 'Menu principal' description: 'Principais seções do site' locked: true
Alterando uma configuração via código
Às vezes a alteração que quero fazer é muito simples, como mudar um label ou coisa parecida. Ou já sei exatamente como tem que ficar a configuração final. Nesses casos é comum que alterar a configuração em código e fazer a importação apenas para testar. Isso agiliza um pouco o processo se comparado com ter que encontrar onde alterar na interface e depois exportar.
Com esse módulo, entretanto, o processo fica mais ágil ainda. Se eu alterar a configuração do menu principal para:
langcode: pt-br status: true dependencies: { } id: main label: 'O menu principal' description: 'Principais seções deste belo site' locked: true
Ao acessar a página do menu novamente (admin/structure/menu/manage/main), vejo que a configuração foi atualizada sem que fosse necessário rodar algum comando ou tomar qualquer outra ação para a importação. Ela aconteceu em tempo de execução.
Criação de features
Ficou bem fácil agrupar configs que atendem a um mesmo objetivo, similar ao que fazíamos no Drupal 7 com o módulo Features. Basta adicionar no .info.yml de qualquer módulo uma chave config_devel com uma lista de configurações. Assim ficou o my_project_core.config.yml:
name: ‘My Project Core' type: module description: 'Core features for My project.' core: 8.x package: ‘my_project' config_devel: - system.theme
Depois de rodar o comando drush config-devel-export MODULE_NAME (trocando MODULE_NAME pelo nome de máquina do módulo em questão) posso ver que esse módulo agora possui um arquivo system.theme.yml dentro da pasta config/install.
Dica de ouro
Também é possível fazer a sincronização automática de configurações que fazem parte de features, basta passar o caminho para o arquivo na configuração do módulo. No meu caso ficou assim:
https://www.drupal.org/project/config_devel