Saltar a contenido

Composer y sus comandos básicos en Drupal

Objetivo

Entender qué es Composer y aprender los comandos básicos que utilizaremos para instalar Drupal, Drush, módulos, temas y otras dependencias.

1. ¿Qué es Composer?

Composer es el gestor de dependencias de PHP. Permite declarar qué paquetes necesita un proyecto y se encarga de descargarlos, resolver sus dependencias y mantener sus versiones controladas.

Drupal utiliza Composer para gestionar:

  • Drupal Core.
  • Módulos contribuidos.
  • Temas contribuidos.
  • Drush.
  • Librerías PHP de terceros.
  • Dependencias necesarias para módulos y temas.

En Drupal Academy no instalaremos Composer directamente en Windows. DDEV ya proporciona Composer dentro del contenedor web. Por eso ejecutaremos los comandos así:

ddev composer <comando>

2. Archivos importantes

Composer trabaja principalmente con estos archivos:

Archivo Función ¿Se versiona?
composer.json Declara las dependencias y restricciones de versión Sí
composer.lock Fija las versiones exactas instaladas Sí
vendor/ Contiene las librerías descargadas No
web/core/ Contiene Drupal Core en el proyecto recomendado Sí, mediante el flujo de Composer

El archivo composer.json describe lo que el proyecto necesita. El archivo composer.lock garantiza que todas las personas del equipo instalen las mismas versiones.

La carpeta vendor/ se genera a partir de esos archivos y no debe subirse al repositorio.

3. Crear un proyecto Drupal

El proyecto drupalacademy se creó con:

ddev composer create-project drupal/recommended-project

Este comando utiliza una plantilla oficial de proyecto Drupal y descarga Drupal Core junto con sus dependencias.

El comando create-project se utiliza principalmente al iniciar un proyecto nuevo. En un proyecto existente normalmente utilizaremos composer install.

4. Instalar las dependencias del proyecto

Cuando el repositorio ya contiene composer.json y composer.lock, ejecuta:

ddev composer install

Composer lee el archivo composer.lock y descarga exactamente las versiones indicadas en él.

Este es el comando habitual después de clonar un proyecto o cambiar de rama.

5. Añadir un módulo, tema o herramienta

Para añadir una dependencia se usa require.

Por ejemplo, para instalar Drush:

ddev composer require drush/drush

Para instalar un módulo contribuido:

ddev composer require drupal/admin_toolbar

Para instalar un tema contribuido:

ddev composer require drupal/gin

Composer actualizará composer.json, composer.lock y las carpetas donde se instala el paquete.

Después de descargar un módulo todavía hay que activarlo en Drupal:

ddev drush en admin_toolbar -y

Composer descarga el código. Drush o la interfaz de administración activan el módulo.

6. Eliminar una dependencia

Para eliminar un módulo o paquete:

ddev composer remove drupal/admin_toolbar

Después, si era un módulo activo, comprueba si debes desactivarlo antes:

ddev drush pm:uninstall admin_toolbar -y

El orden recomendado es desinstalar el módulo en Drupal y después eliminar su dependencia con Composer.

7. Consultar los paquetes instalados

Para ver todos los paquetes instalados:

ddev composer show

Para consultar un paquete concreto:

ddev composer show drupal/core

Para consultar la versión de Composer:

ddev composer --version

Para validar la sintaxis y la configuración básica:

ddev composer validate

8. Consultar actualizaciones

Para ver qué dependencias tienen actualizaciones disponibles:

ddev composer outdated

Para filtrar las dependencias de Drupal:

ddev composer outdated "drupal/*"

No actualices dependencias automáticamente sin revisar antes los cambios y las restricciones de versiones.

9. Actualizar dependencias

Para actualizar un paquete concreto y sus dependencias relacionadas:

ddev composer update drupal/admin_toolbar --with-dependencies

Para actualizar las dependencias definidas por el proyecto:

ddev composer update

En un equipo de trabajo, las actualizaciones deben hacerse en una rama, probarse y revisarse antes de integrarlas en la rama compartida.

Después de una actualización:

  1. Revisa los cambios de composer.json y composer.lock.
  2. Comprueba el estado del sitio.
  3. Revisa los mensajes de Drupal.
  4. Ejecuta las actualizaciones de base de datos si corresponde.
  5. Prueba las funcionalidades afectadas.
  6. Guarda los cambios en Git.

10. Ejecutar Composer en el lugar correcto

Los comandos de Composer deben ejecutarse en la raíz del proyecto, donde está composer.json:

cd ~/proyectos/drupalacademy
ddev composer show

No los ejecutes dentro de web/core ni dentro de vendor.

En nuestro flujo, utiliza ddev composer en lugar de composer directamente:

# Recomendado en el curso
ddev composer require drupal/admin_toolbar

# No es el comando habitual del curso
composer require drupal/admin_toolbar

11. Relación entre Composer, DDEV y Drupal

Cada herramienta tiene una responsabilidad distinta:

  • Composer: descarga y gestiona paquetes PHP.
  • DDEV: proporciona el entorno Docker y ejecuta Composer dentro del contenedor.
  • Drupal: utiliza el código descargado para ofrecer el sitio.
  • Drush: administra Drupal desde la terminal.
  • Git: guarda composer.json y composer.lock para compartir las dependencias con el equipo.

Comprobación

Desde drupalacademy, ejecuta:

cd ~/proyectos/drupalacademy
ddev composer --version
ddev composer show drupal/core
ddev composer show drush/drush
ddev composer validate

Después responde:

  1. ¿Qué diferencia hay entre composer.json y composer.lock?
  2. ¿Por qué no se versiona vendor/?
  3. ¿Qué comando añade un módulo?
  4. ¿Qué comando activa el módulo después de descargarlo?
  5. ¿Por qué usamos ddev composer en este curso?

Referencias oficiales