Vazcell

Config Split: configuración distinta por entorno en Drupal

Por Adrián Vázquez · Actualizado el · 7 min de lectura

Este artículo se publicó en el blog anterior de Vazcell y lo he revisado y actualizado para Drupal 10 y 11.

En resumen

Config Split permite que parte de la configuración de Drupal solo exista o cambie en un entorno concreto: por ejemplo, módulos de desarrollo solo en local o la caché de CSS y JS desactivada en local. Se crea un split por entorno, se elige qué va en cada uno y se activa con una línea en settings.php.

Para qué sirve Config Split

La sincronización de configuración de Drupal exporta toda la configuración del sitio a archivos YML, pero por defecto es la misma en todos los entornos. Config Split añade el concepto de entorno: puedes tener módulos que solo se activan en local, o ajustes que cambian entre desarrollo y producción, sin tocar la configuración común.

Instalación

composer require drupal/config_split
drush en config_split

Después, en Configuración → Desarrollo → Sincronización de configuración verás la pestaña de Configuration Split, con la lista de splits (al principio, vacía).

Crear un split por entorno

Crea un split para cada entorno que lo necesite (por ejemplo local, dev, staging y pro). En cada uno indicas un nombre y la carpeta donde se guardarán sus YML, que debe existir y tener permisos de escritura, por ejemplo ../config/local.

Complete split y conditional split

  • Complete split: lo que elijas aquí desaparece de la configuración común (config/sync) y solo existe en el split. Es ideal para módulos de desarrollo como Devel o Twig VarDumper, que nunca deberían activarse en producción.
  • Conditional split (o partial split): la configuración común se mantiene y en el split solo se guarda la diferencia. Es lo que más uso, porque el sitio se puede desplegar sin depender de que haya un entorno activo.

Un ejemplo clásico de conditional split es system.performance: en config/sync se guarda con la agregación de CSS y JS activada y en el split local, desactivada para poder desarrollar cómodamente.

Activar el split en cada entorno

Cada entorno activa su split desde settings.php (o desde un settings.local.php que no se suba al repositorio):

$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;

Se puede hacer más automático leyendo una variable de entorno del servidor para decidir qué split activar. Después, exporta la configuración con drush cex y comprueba que los archivos del split se han generado donde esperabas.

Preguntas frecuentes

¿Qué diferencia hay entre Config Split y Config Ignore?

Config Split separa configuración por entornos. Config Ignore hace que Drupal no sobrescriba cierta configuración al importar, útil para ajustes que cambia el cliente en producción. Se usan a menudo juntos.

¿Config Split funciona en Drupal 10 y 11?

Sí, con la versión 2 del módulo. Si vienes de la versión 1, revisa las notas de actualización en drupal.org, porque cambian algunas opciones.

¿Prefieres que te lo mire yo?

Cuéntame tu caso y te digo qué haría, cuánto costaría y cuánto tardaríamos, sin compromiso.

Pedir presupuesto gratis