Как применить патч с помощью Composer

Когда мы обнаруживаем, что какая-то библиотека работает с ошибкой, разработчики программного обеспечения часто выпускают патч для исправления этой ошибки. Но вот проблема, если проект сконфигурирован с помощью 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

 

Категория