Requer módulo contrib v8 apenas com patch v9
- Dado que tenho a instalação do Drupal 9 composer com o
composer-patchesplugin - e dado um módulo contrib com uma versão v8 estável, mas sem versão v9 (nem mesmo o branch dev)
- e dado que o módulo contrib tem um patch v9 funcional na fila de problemas
existe algum método para instalar esse módulo + patch no composer? Mesmo se eu adicionar manualmente ambos, o pacote e o patch, ao meu composer.json, ainda não posso requireou updateeste módulo com o composer devido a versões conflitantes. Eu realmente quero evitar a duplicação de /contribcódigo na /custombase de código do meu projeto . Minha solução alternativa atual é:
- bifurcar esse módulo para o meu próprio repositório git privado
- aplicando patch lá
- criando um novo
composer.jsonno meu git privado e alterando o fornecedor do pacote para meucustom_private_vendor - adicionando meu git privado como repositório VCS no projeto D9
composer.json - e depois
composer require custom_private_vendor/contrib_module
Isso cumpre meu objetivo de não duplicar o módulo contrib na base de código personalizada do meu projeto, mas sempre que faço isso sinto vontade de lavar minhas mãos sujas.
Existe algo mais elegante como composer require drupal/contrib_module --apply-patch-firstou posso de alguma forma direcionar o git do drupal.org com um patch específico incluído?
Respostas
Você tem a ideia certa, mas não precisa fazer um fork do repositório do Drupal. Você pode configurar o composer para ler o repositório git do Drupal em vez de usar packagist para os módulos impertinentes como este:
{
"type": "package",
"package": {
"name": "drupal_git/cache_control_override",
"type": "drupal-module",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://git.drupalcode.org/project/cache_control_override.git",
"reference": "8db91684a427366d8f9c51f60cbac10c2d586d95"
}
}
},
Observe que a 'referência' é um hash de confirmação, embora pareça que você também pode usar tags .
E, em seguida, faça o patch normalmente usando o composer:
"drupal_git/cache_control_override": {
"Drupal 9 Compatibility (3132036)": "https://www.drupal.org/files/issues/2020-04-29/Drupal-9-readiness-3132036-2.patch"
},
(Descaradamente roubado de @acbramley no Drupal Slack porque vale a pena divulgar esse conhecimento)