Когда мы обнаруживаем, что какая-то библиотека работает с ошибкой, разработчики программного обеспечения часто выпускают патч для исправления этой ошибки. Но вот проблема, если проект сконфигурирован с помощью Composer, то любые исправления в исходных файлах просто сотрутся при обновлении.
В таких случаях можно воспользоваться специальной библиотекой, при помощи которой можно научить Composer устанавливать патчи самостоятельно.
Для этого нам нужно установить библиотеку
composer require cweagans/composer-patches
После этого в файле composer.json вы можете добавлять патчи для библиотек. Делается это в секции extra ключ patches. Например:
"extra": {
"enable-patching": true,
"patches": {
"drupal/core": {
"<patch1 information>": "<patch1 file path>"
},
"drupal/libraries": {
"<patch1 information>": "<patch1 file path>"
}
}
}
Вам нужно указать какую библиотеку вы хотите исправить (в примере drupal/core), а в качестве значения выступают ключ (название патча, текст) и значение - путь к файлу (абсолютный или относительный).
Также вам нужно добавить опцию "enable-patching": true
После этих действий нужно запустить команду:
composer install
Патч должен примениться.
Иногда после применения патча файл composer.lock может не обновиться. Чтобы исправить этот момент вам нужно выполнить команду:
composer update --lock
Если при обновлении Composer не смог применить патч, то он выполнит действие по умолчанию и не остановится на ошибке. Чтобы избежать этого и заставить Composer остановить работу с ошибкой, нужно прописать ключ в секции extra:
"composer-exit-on-patch-failure": true