Есть ли разница обновлять модуль через 'composer update' или 'composer require' ?

Главные вкладки

Аватар пользователя VasyOK VasyOK 20 июня 2020 в 13:47

Допустим, нужно обновить один какой-то модуль. Пусть будет admin_toolbar.

Есть ли разница как это делать через:
composer update drupal/admin_toolbar --with-dependencies
или
composer require 'drupal/admin_toolbar:^2.3'
?

Комментарии

Аватар пользователя VasyOK VasyOK 20 июня 2020 в 16:26

Я в курсе.
Но если вбить composer require, оно ж все равно нужную версию поставит. Есть ли разница: поставить новую версию модуля или обновить до новой версии модуля?

Аватар пользователя gun_dose gun_dose 22 июня 2020 в 0:11
1

Разница есть. Мажорные версии модулей через update не подтягиваются, т.к. само по себе мажорное обновление может сломать обратную совместимость и всё такое. Поэтому тот же админ меню с 1 на 2 версию обновляется через require. Хотя конкретно в админ меню при таком обновлении ничего не ломается.

В общем, я всегда делаю так:
1. composer update
2. drush updb
3. Идём в отчёт о доступных обновлениях и смотрим, что там осталось.
4. Если что-то осталось необновлённое, читаем release notes по каждому модулю, который нужно обновить.
5. Через composer require устанавливаем нужные версии модулей.
6. Опять drush updb.

Аватар пользователя VasyOK VasyOK 22 июня 2020 в 12:46

"Мажорные версии модулей через update не подтягиваются" - это хорошо. При обновлении мажорных версий нужно релиз нотес читать.
Но если представить, что перед версией 8.x-2.3 была версия 8.x-2.2 разницы вроде никакой.

Аватар пользователя gun_dose gun_dose 22 июня 2020 в 13:02

Это стандартная ситуация, когда пропустил пару апдейтов и у тебя стоит версия допустим 1.19, а предлагает установить 2.3, то нужно читать release notes для версии 2.0. Ну по хорошему надо ещё и 2.1 и 2.2 и 2.3 прочесть, но все подводные камни миграции всегда описывают в первом релизе новой ветки. Кроме того, на самой странице модуля могут быть написаны рекомендации по обновлению с одной версии на другую, но это бывает не всегда.