По мотивам вопроса
Предположим, мы хотим установить модуль Toolbar Themes на D9, но он давно не обновлялся и не имеет директивы совместимости с D9
Вариант 1 - простейший
Скачать модуль вручную, положить в папку modules/custom и внести нужные изменения. После этого нужно капать на мозги мейнтейнерам модуля, чтобы они поскорее приняли патчи и желательно выпустили новый релиз. После этого модуль нужно удалить из custom и установить с помощью composer
Вариант 2 - новая функциональность на drupal.org
Не так давно на drupal.org появилась функциональность issue forks. Мы можем делать форк issue, а затем через интерфейс гитлаба вносить изменения (это удобно, когда нужно изменить всего 1 строчку, как в нашем случае).
Нужно создать новый issue (в нашем случае он уже создан) https://www.drupal.org/project/toolbar_themes/issues/3149099
Нажать "Create issue fork"
Кликаем по ссылке, переходим на гитлаб.
Открываем файл toolbar_themes.info.yml и добавляем в него строчку core_version_requirement: ^8 || ^9
, жмем "commit changes"
Добавляем в ваш composer.json в раздел основного репозитория
"drupal/toolbar_themes"
]
чтобы получилось в итоге
"type": "composer",
"url": "https://packages.drupal.org/8",
"exclude": [
"drupal/toolbar_themes"
]
}
Возвращаемся на drupal.org в наш issue, жмем "show commands" и копируем путь к нашему репозиторию. Он должен быть в виде git@git.drupal.org:issue/toolbar_themes-3149099.git
Вставляем его в раздел репозиториев нашего compose.json
должно получиться вот так в итоге
{
"type": "composer",
"url": "https://packages.drupal.org/8",
"exclude": [
"drupal/toolbar_themes"
]
},
{
"type": "git",
"url": "git@git.drupal.org:issue/toolbar_themes-3149099.git"
}
],
выполняем установку модуля командой composer require 'drupal/toolbar_themes:dev-3149099'
Если мы получили ошибку No valid composer.json was found in any branch or tag of git@git.drupal.org:issue/toolbar_themes-3149099.git, could not load a package from it.
значит у модуля нет своего composer.json файла и нужно еще добавить в наш composer.json
"type": "package",
"package": {
"name": "drupal/toolbar_themes",
"version": "dev-custom",
"type": "drupal-module",
"source": {
"type": "git",
"url": "git@git.drupal.org:issue/toolbar_themes-3149099.git",
"reference": "3149099"
}
}
}
Где reference указан стрелкой
Нужно будет переделать секцию repositories в такой вид
"drupal": {
"type": "composer",
"url": "https://packages.drupal.org/8",
"exclude": [
"drupal/toolbar_themes"
]
},
"drupal/toolbar_themes": {
"type": "package",
"package": {
"name": "drupal/toolbar_themes",
"version": "dev-custom",
"type": "drupal-module",
"source": {
"type": "git",
"url": "git@git.drupal.org:issue/toolbar_themes-3149099.git",
"reference": "3149099"
}
}
}
},
наконец-то выполняем composer require 'drupal/toolbar_themes'
и видим что модуль скачался из нашего issue форка
- Installing drupal/toolbar_themes (dev-custom 3149099): Cloning 3149099 from cache