Можно ли запустить composer install, подавляя удаление пакета (Drupal 8)?
Я использую Drupal-8, и для этого требуется следующий рабочий поток, когда пакет был необходим с помощью composer и установлен с помощью Drupal, но впоследствии удален из Drupal и удален через composer другим разработчиком:
- Обновите мой локальный репозиторий
- Запустите
composer
, чтобы установить или обновить (и только установить/обновить) пакеты вcomposer.json
- Запуск скриптов в моей CMS для работы с деталями установки/удаления пакета (которые зависят от наличия пакета)
- Запустите
composer
, чтобы удалить все пакеты, удаленные изcomposer.json
Шаг 4 , вероятно, может быть просто composer install
, но мне интересно, есть ли способ подавить удаление пакета на Шаге 2? Кроме того, Drupal-8 не может выполнить Шаг 3, поскольку в удаленном пакете composer встроены инструкции по удалению Drupal.


Ответы - Можно ли запустить composer install, подавляя удаление пакета (Drupal 8)? / Is is possible to run composer install while suppressing package uninstallation (Drupal 8)?

13.11.2019 08:42:53
Параметры установки и обновления находятся прямо здесь.
И нет, нет возможности выполнить любую команду и выполнить только половину ее заданий. Удаление ненужных зависимостей является частью того, что делает композитор.
Если вы хотите такое поведение, вам придется кодировать его самостоятельно.

14.11.2019 11:24:22
Я отметил это с помощью Drupal, поскольку это может не относиться к другим системам.
Мое решение на данный момент заключается в том, чтобы захватить удаления в сценарии, который я запускаю после установки composer, который повторно устанавливает удаленные модули. Позже git checkout
восстанавливает состояние композитора.* , затем rm composer.reinstall.sh; git checkout composer.*
запускается снова. Итак, последовательность такова:
- Обновите мой локальный репозиторий
- Запустите
rm composer.reinstall.sh; git checkout composer.*
и отфильтруйте выходные данные, чтобы удалить коды ANSI и вытащить строки, начинающиеся с "- Removing", а затем строки, начинающиеся с "Deleting" , и переформатируйте их какcomposer require
:
composer.reinstall.sh
- Запустите сгенерированный скрипт:
composer install | tee >(perl -pe 's/\e\[[0-9;]*m//g'|grep -B1 "^Deleting"|grep "^ - Removing"| perl -pe 's/^ - Removing ([^ ]+) \(([^\)]+)\)/composer require \1:\2/g' > composer.reinstall.sh)
- Запуск скриптов в моей CMS (
sh composer.reinstall.sh
иdrush cim
BTW) для работы с деталями установки/удаления пакета (которые зависят от наличия пакета) - Повторная инициализация файлов composer:
drush updb
- Запустите
rm composer.reinstall.sh; git checkout composer.*
, чтобы удалить все пакеты, удаленные изcomposer install