Cuando llevas un tiempo trabajando con Drupal te das cuenta que por defecto tiene muchas carencias, por suerte, estas carencias las podemos solventar gracias a los módulos contribuidos de la comunidad que extienden este maravilloso CMS consiguiendo prácticamente lo imposible.
En esta ocasión vamos a hablar de config split, módulo que tenéis disponible en la ficha oficial de drupal.org. Este módulo extiende principalmente la funcionalidad de la sincronización de configuración con la principal característica de añadir el sistema de "Entornos" con el cual podemos hacer que un módulo este solo instalado en local entre otras cosas.
Instalación del módulo
Para instalarlo es tan sencillo como requerirlo en nuestro composer mediante el siguiente comando
composer require drupal/config_split
La versión actual que está disponible de forma estable a día de hoy es la 8.x-1.7
En cuanto el módulo haya sido requerido podremos activarlo mediante el siguiente comando
drush en config_split
A partir de este momento ya tenemos instalado nuestro módulo y podemos comenzar a configurarlo.
Configuración del módulo
Una vez instalado el módulo podemos ir al apartado de Configuración de nuestro entorno y nos aparecerá lo siguiente.
Al acceder a la página nos aparecerá un listado de los entornos que tenemos creados, nada más empezar esta lista estará vacía y deberemos proceder a crear un entorno.
En nuestro caso vamos a crear el entorno "Local" con el cual estableceremos varios módulos como uso exclusivo del entorno local.
Como podéis ver hemos establecido un título, descripción y la localización de la carpeta dónde se almacenará los YML correspondientes al entorno local.
La carpeta la tenemos que tener creada previamente, sino nos dirá que nos tenemos que asegurar que la carpeta existe y tiene permisos de escritura.
Una vez realizado este paso pasamos al apartado más importante del módulo, la configuración del entorno "local".
Complete split
Primero de todo vamos a ver el apartado de "Complete Split" el cual supone que todo lo que este seleccionado en esta sección será eliminado de la carpeta config/sync y será copiado a la carpeta del entorno pertinente, esto es muy útil si cierta configuración no queremos que existas por defecto en el entorno a no ser que nos encontremos en el entorno "local".
Para empezar tenemos una lista de todos lo módulos que tenemos instalados en nuestro Drupal, en esta lista deberemos seleccionar los módulos que única y exclusivamente van a ser instalados en este entorno. En nuestro caso vamos a poner el módulo "Twig VarDumper" ya que es un módulo que solo lo utilizamos cuando estamos desarrollando.
Dentro de la misma sección tenemos un segundo apartado con la configuración por YML el cual nos muestra una lista completa de todos los YML que tenemos disponibles y si este no sale reflejado o preferimos utilizar "wildcards" entonces tenemos un campo de texto para poder utilizarlo.
Conditional split
Por otro lado tenemos el "Conditional split" este apartado es el que más utilizo ya que a mi me gusta tener en la carpeta sync toda la información por "defecto" para que el entorno se pueda desplegar sin tener que estar en un entorno activado específico, con este método, solo incluiremos en la carpeta correspondiente la diferencia en caso de que exista.
Uno de las configuraciones más famosas a utilizar es el archivo de performance, archivo encargado de decirle a drupal si los CSS y JS estás minificados o no, normalmente en local deberemos tenerlo desactivado para poder trabajar y en otros entornos tenerlo activado.
Para el ejemplo anteriormente citado deberemos añadir en el apartado de Configuration items el archivos system.performance. Esto significa que en la carpeta config/sync deberemos tener el archivo con el minificado activado y posteriormente en la carpeta "local" lo tendremos desactivado.
Una vez finalizada la configuración, necesitamos decirle a Drupal en qué entorno estamos trabajando, en este caso lo agregaremos de una manera más sencilla. Editamos la configuración php y agregamos la siguiente línea.
$config['config_split.config_split.local']['status'] = TRUE;
En algunos de nuestros entornos tenemos diferentes estados, así es como se ve.
$config['config_split.config_split.local']['status'] = TRUE;
$config['config_split.config_split.dev']['status'] = FALSE;
$config['config_split.config_split.staging']['status'] = FALSE;
$config['config_split.config_split.pro']['status'] = FALSE;
Podemos hacer esto un poco más complejo agregando algo de lógica para tener en cuenta el dominio donde estamos, hay muchas variables de php que podemos utilizar para hacerlo posible.
Una vez actualizado el archivo settings.php simplemente tendremos que utilizar el comando de exportación "drush cex" el cual actualizará varios archivos, entre ellos los siguientes.
- core.extensions: El módulo twig vardumper dejará de activarse en otros entornos que no sea el local.
- system.performance: El archivo se creará en la carpeta local con la configuración desactivada.
Otros ejemplos muy útiles que utilizo en mi día a día son los siguientes: Configuración SMTP (servidor de correo usado en local y producción), datos de la API que utilizamos, etc...
¿Ya lo habéis instalado? ¿A que esperas?