Esta es la manera recomendada por Drupal.org para actualizar el core del CMS como sus módulos y temas contribuidos.
Actualizar el core de Drupal:
- Correr
composer outdated "drupal/*"
- Luego corremos el comando que actualizara Drupal a la última versión de Drupal que tenemos, (por ejemplo actulizará de la 9.0.5 > 9.0.11 pero no actualizará a 9.1.x o a 10.0.x):
composer update "drupal/core-*" --with-all-dependencies
- Es recomendable usar el módulo Upgrade Status cuando tengamos una actualización hacia una major versión por ejemplo de Drupal 9 a Drupal 10.
- Este módulo nos dará un listado de todo lo que debemos modificar, para poder actualizar Drupal.
- Después de tener todo listo y antes de actualizar el core por composer debemos desinstalar Upgrade Status, desde Drupal y quitarlo por composer con:
-
composer remove drupal/upgrade_status
- Alternativamente si por alguna razón quisiéramos actualizar a una versión específica de Drupal sería de la siguiente manera:
- Ej. Versión 9.3.6 (esto fijara la versión de Drupal en nuestro proyecto):
-
composer require drupal/core-recommended:9.3.6 drupal/core-composer-scaffold:9.3.6 drupal/core-project-message:9.3.6 --update-with-all-dependencies
- Si hemos fijado una versión y ya no queremos que esté fija y queremos actualizar el core corremos
composer require drupal/core-recommended drupal/core-composer-scaffold drupal/core-project-message --update-with-all-dependencies
- Actualizar la base de datos y limpiar caché (más rápido y eficiente por drush pero también se puede hacer por la interface de Drupal) :
-
drush updatedb -y
-
drush cache:rebuild
- Esto sería en ambiente local si pasamos la actualización a otros ambientes y/o producción:
- Hacer pull en el server y luego correr:
- composer install (recomiendan composer install --no-dev para ambientes de producción)
- Actualizar base de datos (updatedb o update.php).
- Limpiar caché.
-
Notas:
- Se asume que el proyecto se creo siguiendo lo recomendado en drupal.org, para verificar esto correr:
composer show drupal/core-recommended
Si devuelve información del proyecto y sus dependecias se está usando la manera recomendada, si nos da un mensaje de "Package drupal/core-recommended not found" no estamos usando nuestro proyecto de la forma recomendada, y para actualizar deberemos seguir otras instrucciones aquí
- Para el core, si no nos dejara actualizar podemos correr para ver que está frenando la actualización composer prohibits ej.
composer prohibits drupal/core 9.4.0
- Debemos actualizar esas dependencias junto al core ej.
composer update drupal/core "symfony/*" --with-dependencies
- En un proyecto por ejemplo encontré una dependencia que estaba fija (en el composer.json) y no dejaba actualizar el core:
- "symfony/var-dumper": "v5.3.9", al no tener el símbolo ^ le dice a composer que solo queremos usar esa versión.
- Se cambió por "symfony/var-dumper": "^v5.3.9", en el composer.json y se pudo actualizar.
Actualizar módulos (módulos y temas contribuidos):
- Ver que esta desactualizado, composer marcará de diferente color las minor-version updates y los major-version upgrades, adicionalmente si queremos ver actualizaciones de seguridad debemos correr:
drush pm:security
-
composer outdated "drupal/*"
-
- Actualizar módulo, para más de 1 módulo dejar un espacio, ej. drupal/module drupal/other_module
-
composer update drupal/module --with-all-dependencies
- Esto funciona para actualizaciones entre las mismas versiones de módulos minor-version updates (minor-version updates ej. module_1.2.0 a module_1.3.1) pero no para cambios de major-version upgrade (major-version upgrade ej. module_1.3.0 a module_2.0.0) para eso se usará el composer require y nos recomiendan visitar las página de los módulos y revisar la documentación ya que las major-version updates tiene cambios significativos que podrían afectar nuestro proyecto.
-
composer require drupal/module:^2.0
-
-
- Después de hacer update o upgrade a el/los módulo/s debemos actualizar la base de datos y limpiar caché (recomendado correr estos comando por drush pero también se puede hacer por la interface de Drupal) :
-
drush updatedb -y
-
drush cache:rebuild
-
drush config:export --diff
- Esto último es recomendado por drupal.org para exportar los cambios potenciales en la configuración y revisarlos via --diff: que creo seria recomendado pero opcional.
- Para quitar un módulo de composer (debe haber sido desinstalado por interface de Drupal o por drush previamente) luego corremos:
-
composer remove drupal/module
-
-
Me pareció interesante el artículo
Añadir nuevo comentario