Si trabajas con sitios web desarrollados en Drupal, seguramente ya habrás escuchado hablar de Composer. Esta herramienta se ha vuelto esencial para la gestión de proyectos en PHP, especialmente para quienes desean mantener sus dependencias actualizadas y su código organizado. En el caso de Drupal, Composer no solo es útil, sino que ya es el método recomendado para instalar y mantener tanto el core como los módulos, temas y otras librerías.
En este artículo te explicamos con todo lujo de detalles cómo utilizar Composer con Drupal, desde su instalación hasta la gestión de actualizaciones, creación de nuevos proyectos y resolución de conflictos. Si estás empezando o quieres afianzar tus conocimientos, aquí tienes una guía completa con todo lo que necesitas saber.
¿Qué es Composer y por qué es fundamental en proyectos Drupal?
Composer es un gestor de dependencias para PHP que te permite declarar las librerías de tu proyecto y las instala automáticamente junto con sus versiones correspondientes. En el ecosistema Drupal, Composer ha sido adoptado como la forma estándar de instalar el core, módulos y temas, reemplazando los métodos manuales del pasado.
La gran ventaja es que Composer se encarga de resolver las dependencias entre proyectos, evitando conflictos y permitiendo actualizaciones controladas. Además, gestiona un archivo composer.lock
que garantiza que todos los entornos trabajen sobre la misma versión exacta de cada paquete.
Instalación de Composer en tu sistema
Antes de trabajar con Composer, necesitas instalarlo en tu sistema operativo. Puedes hacerlo siguiendo los pasos en su web oficial en getcomposer.org. Una vez instalado, verifica que funciona correctamente ejecutando en la terminal el comando:
composer --version
Si obtienes una respuesta con la versión, Composer está listo para usarse. También puedes escribir simplemente composer
para ver el listado de comandos disponibles.
Crear un nuevo proyecto Drupal usando Composer
Una forma eficiente y recomendada de iniciar un sitio Drupal nuevo es usando un proyecto base a través de Composer. El más popular actualmente es drupal/recommended-project
.
Para iniciar un nuevo proyecto solo tienes que ejecutar el siguiente comando:
composer create-project drupal/recommended-project nombre-del-proyecto
Este comando creará una nueva carpeta con ese nombre, descargará el core de Drupal y establecerá la estructura recomendada para mantener tu código ordenado.
Si deseas usar una versión específica de Drupal, puedes indicarla así:
composer create-project drupal/recommended-project:^10.0 nombre-del-proyecto
Configuración del archivo composer.json
El archivo composer.json
es el corazón de tu proyecto. En él se declaran todas las dependencias que necesitará tu sitio y cómo deben instalarse. Es fundamental que tenga configuraciones adecuadas como:
- El repositorio de Drupal.org en el array
repositories
- La clave
installer-paths
para definir dónde se deben colocar los módulos, temas y perfiles
Este archivo también puede contener metadatos como el nombre del proyecto, la versión, licencia y descripción. Al agregar dependencias, Composer actualizará automáticamente este archivo, junto con composer.lock
.
Instalar módulos o temas con Composer
Para instalar un nuevo módulo, simplemente necesitas saber su nombre en Drupal.org (el machine name) y usar:
composer require drupal/nombre_modulo
Este comando descargará el módulo y sus dependencias automáticamente. Por ejemplo, para instalar Token:
composer require drupal/token
También puedes especificar la versión:
composer require drupal/token:^1.1.0
Actualizar módulos y temas con Composer
Para mantener tus módulos actualizados, Composer facilita mucho el proceso. Solo necesitas ejecutar:
composer update drupal/nombre_modulo
Si quieres actualizar también las dependencias del módulo, añade --with-all-dependencies
:
composer update drupal/nombre_modulo --with-all-dependencies
Y si necesitas forzar una versión mínima para Drupal core:
composer require drupal/core:^10.0 --update-with-all-dependencies
Para actualizar todo el proyecto según las restricciones de versiones:
composer update
Convertir un proyecto existente para usar Composer
Si tienes un sitio Drupal sin Composer y quieres migrarlo, existen herramientas como:
- El plugin Composerize para Drupal
- El módulo Composerize
Si estas opciones no te funcionan, puedes hacerlo manualmente montando un composer.json desde cero, añadiendo las dependencias una a una e instalándolas con composer install
.
Uso de Upgrade Status y Drupal Check antes de una actualización mayor
Cuando se trata de pasar a versiones mayores como Drupal 10, lo ideal es usar herramientas que analicen la compatibilidad. Dos de las más recomendadas son:
- Upgrade Status: escanea tu instalación y te muestra los módulos que no son compatibles, funciones obsoletas, errores en archivos
.info.yml
ycomposer.json
- Drupal Check: herramienta de análisis estático que identifica llamadas a funciones en desuso o incompatibles
Puedes instalar Upgrade Status con Composer así:
composer require drupal/upgrade_status:4.x-dev --dev
Y Drupal Check:
composer require mglaman/drupal-check
php vendor/bin/drupal-check
Gestión de versiones de PHP
Drupal 10 requiere PHP 8.1 como mínimo. Puedes asegurarte de que tu proyecto lo exige al añadir esta línea:
composer require php:"^8.1" --no-update
También puedes configurar la versión de plataforma para simular un entorno específico:
composer config platform.php 8.1
Esto es útil en entornos de integración continua o en máquinas locales con versiones distintas.
Resolver conflictos al actualizar Drupal core
Al hacer una gran actualización, como de Drupal 9 a 10, es probable que Composer detecte incompatibilidades entre las dependencias. Composer te mostrará un análisis con los paquetes en conflicto.
Por ejemplo, una incompatibilidad con Devel podría solucionarse así:
composer require drupal/devel:^5.0 --no-update
composer update
Repite este proceso con cada conflicto que aparezca hasta completar la actualización. Puede implicar utilizar versiones en desarrollo o incluso aplicar parches desde Drupal.org.
Autocarga y estructura del proyecto
Composer genera automáticamente un archivo autoload.php
que puedes requerir en tu código para incluir todas las librerías instaladas. Por ejemplo, en un archivo index.php podrías usar:
require 'vendor/autoload.php';
Esto resulta muy útil al trabajar con librerías como Kint para depuración:
d($variable);
Además, Composer organiza automáticamente tus dependencias en la carpeta vendor
, y mantiene limpio tu repositorio ya que no necesitas subir manualmente los módulos.
Manejo de eliminación de dependencias
¿Quieres quitar una librería o módulo? Basta con eliminarlo de composer.json
en el bloque require
y luego ejecutar:
composer update
Composer se encargará de eliminar archivos y dependencias relacionadas que ya no sean necesarias.
Este enfoque hace que trabajar con Drupal sea más eficaz, asegurando que tus proyectos mantengan la estructura, compatibilidad y actualizaciones de manera sencilla y controlada. Dominar Composer es un paso clave para cualquier desarrollador que busque optimizar su flujo de trabajo y garantizar la calidad en sus implementaciones Drupal.
Comentarios