Vazcell

Cómo aplicar un parche en Drupal 10 y 11 con Composer

Por Adrián Vázquez · Actualizado el · 6 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

Para aplicar un parche en Drupal con Composer se instala el plugin cweagans/composer-patches, se declara el parche en la sección extra del composer.json (paquete, descripción y URL del parche) y se reinstala el paquete afectado. Si falla, el modo detallado de Composer explica el motivo.

Qué es un parche y cuándo usarlo

Un parche es un pequeño cambio en el código que corrige, mejora o modifica el comportamiento de un módulo, un tema o el propio núcleo de Drupal. Normalmente sale de una incidencia (issue) en drupal.org cuando el arreglo todavía no está publicado en una versión estable.

Los parches son temporales: cuando el módulo se actualice, es probable que el cambio ya venga incluido o que el parche deje de aplicarse porque el código ha cambiado. Por eso conviene revisarlos en cada actualización y quitarlos en cuanto dejen de hacer falta.

Instalar composer-patches

Para gestionar parches con Composer se usa el plugin composer-patches:

composer require cweagans/composer-patches

Declarar el parche en composer.json

Los parches se declaran en la sección extra del composer.json, agrupados por paquete. Para cada uno se indica una descripción (yo pongo el título y el número de la incidencia, para encontrarla en el futuro) y la URL del archivo .patch:

"extra": {
  "patches": {
    "drupal/core": {
      "Descripción del arreglo - 1234567": "https://www.drupal.org/files/issues/2026-01-01/1234567-10.patch"
    },
    "drupal/gin": {
      "Improve content form detection - 3188521": "https://www.drupal.org/files/issues/2021-05-19/3188521-8.patch"
    }
  }
}

Con el parche declarado, reinstala el paquete afectado para que Composer lo descargue de nuevo y aplique el parche:

composer update drupal/gin

Si todo va bien, verás en la salida que el parche se ha aplicado. Guarda los cambios de composer.json y composer.lock en Git para que el resto del equipo y los despliegues apliquen el mismo parche.

El parche no se aplica o da error

Es habitual encontrarse parches que ya no aplican. Para ver el motivo, ejecuta Composer en modo detallado:

composer update drupal/gin -vvv
  • Si no encuentra el archivo, revisa que la URL del parche sea correcta y siga disponible.
  • Si no encuentra las líneas que tiene que cambiar, el parche se hizo para otra versión del módulo: busca en la incidencia una versión más reciente del parche o comprueba si el arreglo ya está incluido en la versión que usas.
  • Si no hay parche nuevo, se puede rehacer el cambio sobre tu versión y generar un parche propio, guardándolo en el repositorio.

Preguntas frecuentes

¿Puedo aplicar un parche a un archivo local en lugar de una URL?

Sí. composer-patches acepta rutas a archivos del propio proyecto, lo que es útil para parches propios o para no depender de que una URL externa siga disponible.

¿Qué pasa con los parches al actualizar Drupal?

Al actualizar, Composer intenta aplicar de nuevo cada parche. Si el arreglo ya está incluido o el código ha cambiado, fallará: es el momento de quitarlo o sustituirlo por una versión nueva.

¿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