Есть некоторые D8 модули, которые работают с D9, но не имеют официальных D9 релизов. Как их поставить Композером?
Например https://www.drupal.org/project/toolbar_themes/
https://www.drupal.org/files/issues/2020-06-06/toolbar_themes.1.x-dev.re... - единственное, что делает патч, это добавляет 9 версию в совместимые.
Комментарии
Самый простой способ - это скачать модуль вручную, положить в папку modules/custom и внести нужные изменения. После этого нужно капать на мозги мейнтейнерам модуля, чтобы они поскорее приняли патчи и желательно выпустили новый релиз. После этого модуль нужно удалить из custom и установить с помощью composer
да, так и делал: в custom - ложил
но допустим модуль требует установки через Composer.
я правда таких не знаю.
Есть варианты через свой личный репозиторий, но я с этим не разбирался.
Буквально вчера читал: https://www.drupal.org/docs/develop/git/using-git-to-contribute-to-drupa...
Идея в том, что drupal.org теперь позволяет для каждого патча создать issue fork - то есть полную версию кода модуля с уже включенным патчем. Этот код может быть вытянут композером с git.drupal.org. Осталось только сказать композеру, чтобы он брал этот модуль не из обычного репозитория drupal, а с git'а. В общем, там всё написано. Идея красивая, но сам не пробовал.
Спасибо за ссылку. Постараюсь попробовать
Еще можно использовать алиас в composer.json
например
"drupal/core": "^9.0.0"
заменить на
"drupal/core": "9.2.0 as 8.9.16"
если модули действительно совместимые с d9
Это корневой composer.json? Там:
"composer/installers": "^1.9",
"cweagans/composer-patches": "^1.7",
"drupal/core-composer-scaffold": "^9.2",
"drupal/core-project-message": "^9.2",
"drupal/core-recommended": "^9.2"
},
"require-dev": {
"drupal/core-dev": "^9.2"
},
"drupal/core-recommended": "^9.2 as 8.9.16" - не получается
тут придется указать точную версию и при дальнейшем обновлении менять вручную.
Т.е. не "^9.2 as 8.9.16", а "9.2.0 as 8.9.16"
1. настроить composer для работы с патчами
2. добавить ссылку на патч в файл composer.json подробнее
3. установить модуль (composer require ...)
Я ждал этого коммента. Попробуй-ка установить модуль на Д9 без директивы core_version_requirement. Composer сразу тебя на фиг пошлет. А чтобы применить патч, модуль как минимум сначала должен скачать и установиться
не, не пошлёт, если подход найти.
composer create-project drupal/recommended-project:8.9.2 toolbar_themes8
composer require cweagans/composer-patches
"enable-patching": true,
"patches": {
"drupal/toolbar_themes": {
"#3149099 Support drupal 9": "https://www.drupal.org/files/issues/2020-06-06/toolbar_themes.1.x-dev.re...
}
},
composer require 'drupal/toolbar_themes:1.x-dev@dev'
Чисто ради своего образования попробовал.
После
composer require 'drupal/toolbar_themes:1.x-dev@dev'
Пишет:
Problem 1
- drupal/toolbar_themes dev-1.x requires drupal/core ^8 -> found drupal/core[8.0.0-beta6, ..., 8.9.x-dev] but the package is fixed to 9.2.x-dev (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.
- drupal/toolbar_themes 1.x-dev is an alias of drupal/toolbar_themes dev-1.x and thus requires it to be installed too.
- Root composer.json requires drupal/toolbar_themes 1.x-dev@dev -> satisfiable by drupal/toolbar_themes[1.x-dev (alias of dev-1.x)].
Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.
https://drupal.ru/docs/veb-masteram-i-vladelcam-saytov/ustanovit-modul-c...
Попробуй способ 2, я постарался максимально подробно расписать
Спасибо, я видел. Просто хочу ознакомиться со всеми мнениями.