Config Ignore
Un módulo que permite ignorar configuraciones específicas de Drupal durante las operaciones de importación y exportación de configuración.
config_ignore
Instalar
composer require 'drupal/config_ignore:8.x-3.3'
Overview
Config Ignore proporciona un mecanismo potente para evitar que ciertos elementos de configuración sean sobrescritos durante las operaciones de sincronización de configuración. Esto es particularmente útil en escenarios donde configuraciones específicas del sitio como el nombre del sitio, direcciones de correo electrónico o configuraciones de módulos de desarrollo deben permanecer sin cambios entre diferentes entornos.
El módulo se integra con el sistema de gestión de configuración de Drupal a través de suscriptores de eventos, interceptando eventos de transformación de almacenamiento para filtrar las configuraciones ignoradas. Soporta tres modos operacionales (Simple, Intermedio y Avanzado) para satisfacer diferentes necesidades de complejidad, desde listas básicas de ignorados hasta control granular sobre operaciones de importación/exportación y creación/actualización/eliminación.
Config Ignore soporta patrones con comodines para coincidir con múltiples configuraciones, targeting de claves de configuración específicas para ignorados parciales, sintaxis de importación forzada usando el prefijo tilde (~), y filtrado de colecciones de idioma para sitios multilingües.
Features
- Ignorar objetos de configuración completos o claves específicas dentro de configuraciones durante la importación/exportación
- Tres modos operacionales: Simple (mismas reglas para todas las operaciones), Intermedio (reglas separadas para importación vs exportación), y Avanzado (control granular sobre creación/actualización/eliminación para importación y exportación)
- Coincidencia de patrones con comodines usando asterisco (*) para coincidir con múltiples nombres de configuración (ej., 'webform.webform.*' ignora todos los webforms)
- Sintaxis de importación forzada con prefijo tilde (~) para permitir explícitamente la importación de configuraciones que de otro modo coincidirían con comodines
- Ignorar configuración parcial usando sintaxis de dos puntos para ignorar solo claves específicas (ej., 'system.site:name' ignora solo el nombre del sitio)
- Soporte de colección de idiomas para ignorar configuración traducida (ej., 'language.fr|system.site:name')
- Anulaciones en settings.php para desactivación y configuración de prioridad del suscriptor de eventos
- Dos hooks alter para modificación programática de configuraciones ignoradas
- Invalidación de etiquetas de caché para cambios de configuración inmediatos
Use Cases
Preservar configuraciones específicas del sitio entre entornos
Al desplegar configuración de desarrollo a producción, configuraciones específicas del sitio como el nombre del sitio, dirección de correo electrónico y eslogan a menudo necesitan permanecer diferentes. Agregar 'system.site' a la lista de ignorados para prevenir que estos valores sean sobrescritos durante la importación de configuración. Esto permite que el sitio de producción mantenga su marca mientras aún recibe otras actualizaciones de configuración.
Ignorar configuraciones de módulos de desarrollo
Módulos de desarrollo como Devel tienen configuraciones que no deberían ser transferidas a producción. Usar patrones con comodines como 'devel.*' para ignorar todas las configuraciones relacionadas con Devel. Esto previene que configuraciones de desarrollo sean accidentalmente desplegadas a entornos de producción.
Ignorar configuración parcial para plantillas de correo electrónico
Cuando las plantillas de correo electrónico necesitan variar por entorno (ej., diferentes direcciones de remitente), usar patrones de clave específica como 'user.mail:register_no_approval_required.body' para ignorar solo el cuerpo del correo mientras permite que otras configuraciones de correo de usuario se sincronicen normalmente.
Ignorar todos los webforms excepto algunos específicos
Usar la combinación de patrones de comodín e importación forzada: 'webform.webform.*' para ignorar todos los webforms, luego '~webform.webform.contact' para forzar la importación del formulario de contacto específicamente. Esto es útil cuando la mayoría de los webforms son específicos del sitio pero ciertos deben ser gestionados en código.
Gestionar configuraciones específicas de traducción
Para sitios multilingües donde las traducciones no deben ser sobrescritas, usar patrones de colección de idioma como 'language.fr|*' para ignorar todas las traducciones en francés, o 'language.*|system.site:name' para ignorar traducciones del nombre del sitio en todos los idiomas mientras permite que otras traducciones se sincronicen.
Prevenir eliminación accidental de tipos de contenido
En modo avanzado, configurar la operación de eliminación para ignorar 'node.type.*' en importación. Esto previene que tipos de contenido sean eliminados si existen en el sitio pero fueron removidos del directorio sync, proporcionando una red de seguridad contra la eliminación accidental de tipos de contenido.
Claves API y credenciales específicas del entorno
Configuraciones que contienen claves API o credenciales que difieren por entorno pueden ser ignoradas usando patrones como 'mymodule.settings:api_key'. Esto asegura que valores sensibles o específicos del entorno no sean sobrescritos durante el despliegue.
Tips
- Comenzar con el modo Simple y solo cambiar al modo Intermedio o Avanzado si tiene casos de uso específicos que requieren reglas separadas de importación/exportación o granularidad de crear/actualizar/eliminar
- Siempre probar los patrones de ignorar configuración en un entorno de desarrollo antes de desplegar a producción
- Usar el prefijo de importación forzada (~) cuidadosamente - anula coincidencias de comodines y puede llevar a importaciones inesperadas si no se ordena correctamente
- Los patrones de ignorar configuración se procesan en orden, con patrones de exclusión (~) tomando precedencia cuando coinciden
- Al depurar, verificar la configuración config_ignore.settings directamente para verificar que los patrones estén guardados correctamente
- Considerar usar hook_config_ignore_ignored_alter para reglas de ignorado dinámicas que dependan del estado del sitio o entorno
- El módulo funciona tanto con drush config:import/export como con la sincronización de configuración basada en UI
Technical Details
Admin Pages 1
/admin/config/development/configuration/ignore
Configurar qué configuraciones deben ser ignoradas durante las operaciones de importación y exportación. Esta página permite a los administradores especificar patrones de configuración que deben ser excluidos del proceso normal de sincronización de configuración.
Permisos 1
Hooks 2
hook_config_ignore_settings_alter
Permite a los módulos agregar programáticamente patrones de configuración a la lista de ignorados. Este hook está obsoleto en favor de hook_config_ignore_ignored_alter.
hook_config_ignore_ignored_alter
Permite a los módulos alterar el objeto ConfigIgnoreConfig con control total sobre todas las listas de ignorados. Proporciona acceso para modificar patrones para direcciones específicas (importación/exportación) y operaciones (crear/actualizar/eliminar).
Troubleshooting 6
Verificar que la sintaxis del patrón sea correcta. Los comodines usan * no %. Asegurar que no haya espacios extra. Verificar si patrones de importación forzada (~) están accidentalmente anulando sus reglas de ignorado. También verificar que esté usando el modo correcto y que los patrones estén en el campo correcto para su operación.
Nunca ignorar la configuración 'core.extension' ya que controla los módulos habilitados. Usar el módulo Config Split en su lugar para módulos específicos del entorno.
Verificar si Config Ignore está desactivado vía settings.php ($settings['config_ignore_deactivate'] = TRUE). También verificar que el módulo esté habilitado y que el caché haya sido limpiado.
Usar la función de Importación Individual en /admin/config/development/configuration/single/import para importar configuraciones individuales sin que las reglas de Config Ignore apliquen.
Ajustar la prioridad vía settings.php: $settings['config_ignore_import_priority'] = -100; y $settings['config_ignore_export_priority'] = 100; Mayor prioridad significa que el ignorado ocurre antes.
Usar la sintaxis de colección de idioma con separador de barra vertical: 'language.LANGCODE|config.name' (ej., 'language.fr|system.site' para traducciones en francés de system.site).
Security Notes 4
- No usar Config Ignore para gestionar configuraciones sensibles de seguridad que deberían ser consistentes en todos los entornos
- Ser cauteloso al ignorar configuraciones relacionadas con permisos ya que esto podría llevar a inconsistencias de seguridad entre entornos
- Ignorar configuraciones de user.role.* podría prevenir que actualizaciones importantes de permisos sean desplegadas
- Siempre revisar las configuraciones ignoradas durante auditorías de seguridad para asegurar que actualizaciones críticas de seguridad no estén siendo bloqueadas