Pressione enter para ver os resultados ou esc para cancelar.

Fique ninja no Drupal com o módulo Config Devel

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:

Screenshot from 2018-09-14 23-30-32

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:

DrupalEsses três recursos que o módulo oferece já vão nos dar um bom ganho de produtividade se soubermos como usá-los. É sempre importante lembrar de que este é um módulo para auxiliar no desenvolvimento de sistema Drupal e não deve ser habilitado em ambiente de produção. Espero que lhe seja útil como está sendo pra mim!
https://www.drupal.org/project/config_devel