Pasar al contenido principal
Please wait...
Figurine LEGO tenant une clé et un écran d'ordinateur sur un socle, expression déterminée.

¿Cómo aplicar un parche a una dependencia de Composer sin hacer un fork?

Cuando trabajas en un proyecto PHP que utiliza Composer para la gestión de dependencias, puede ocurrir que una de tus bibliotecas tenga un bug o requiera una modificación específica para ajustarse a tus necesidades. La solución inmediata que suele venir a la mente es hacer un fork del repositorio, introducir los cambios necesarios y usarlo como origen en tu proyecto.

Sin embargo, este enfoque no siempre es ideal. Hacer un fork de una dependencia implica asumir su mantenimiento, seguir sus actualizaciones y gestionar posibles incompatibilidades futuras. Esto puede convertirse rápidamente en una carga, sobre todo si tienes que mantener varios forks.

Por suerte, existe una alternativa elegante: aplicar un parche directamente sobre la dependencia, sin necesidad de hacer un fork. Este método te permite corregir o modificar el comportamiento de la biblioteca y seguir beneficiándote de las actualizaciones oficiales.

En este artículo, veremos cómo usar Composer y las herramientas asociadas para aplicar parches a tus dependencias de forma eficaz, mantenible y sin complicar tu flujo de trabajo. Tanto si eres un desarrollador principiante como experimentado, esta técnica puede ahorrarte tiempo y simplificar la gestión de tus proyectos.

4 pasos para crear tu parche

1 - Instalación de los paquetes necesarios para el parche

composer require cweagans/composer-patches symplify/vendor-patches --dev

2 - Preparar el archivo del parche

En la carpeta de tus vendors, una vez identificado el archivo correcto, crea una copia del mismo añadiendo el sufijo ".old"

cp vendor/package/toto/src/toto.php vendor/package/toto/src/toto.php.old

Ahora basta con modificar el archivo ".php" y aplicar tus cambios.

Solo se cargan los archivos *.php, no los archivos *.php.old. De este modo puedes asegurarte de que el nuevo código funciona correctamente antes de generar los parches.

3 - Creación del parche

Ejecuta la siguiente línea:

vendor/bin/vendor-patches generate

Esta línea generará un archivo en la carpeta patches; aquí tienes un ejemplo:

/patches/package-toto-src-toto.php.patch

La ruta del parche se crea a partir de la ruta del archivo original, lo que garantiza que el nombre del parche sea siempre único.

Además, se añade la configuración para cweagans/composer-patches a tu archivo composer.json:

{
    "extra": {
        "enable-patching": true,
        "patches": {
            "package/toto": [
                "patches/package-toto-src-toto.php.patch"
            ]
        }
    }
}

4 - Reinstalación de los paquetes y verificación del parche

Basta con comprobar que todo funciona dejando el código limpio.

Lo más sencillo es eliminar la carpeta vendor y volver a lanzar la instalación de los paquetes:

rm -Rf vendor
composer install

Y listo, ya eres un maestro en el arte de parchear tus dependencias sin romperlo todo (o casi). Con este método podrás corregir errores más rápido de lo que tu colega corrige sus typos en Slack. Así que, ¡a teclear!, y que tus proyectos sean tan estables como un servidor un viernes a las 18:00.

Etiquetas

Añadir nuevo comentario

HTML Restringido

  • Puede alinear imágenes (data-align="center") pero también videos, citas, y demás.
  • No sólo puede subtitular imágenes (data-caption="Text"), sino también videos, blockquotes, y mucho más.