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:
- Revisa los cambios de composer.json y composer.lock.
- Comprueba el estado del sitio.
- Revisa los mensajes de Drupal.
- Ejecuta las actualizaciones de base de datos si corresponde.
- Prueba las funcionalidades afectadas.
- 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:
- ¿Qué diferencia hay entre composer.json y composer.lock?
- ¿Por qué no se versiona vendor/?
- ¿Qué comando añade un módulo?
- ¿Qué comando activa el módulo después de descargarlo?
- ¿Por qué usamos ddev composer en este curso?