Richiede solo il modulo contrib v8 con patch v9
- Dato che ho l'installazione del compositore Drupal 9 con
composer-patchesplugin - e dato un modulo contrib con una versione stabile v8, ma nessuna versione v9 (nemmeno dev branch)
- e dato che il modulo contrib ha una patch v9 funzionante nella coda dei problemi
esiste un metodo per installare quel modulo + patch nel compositore? Anche se aggiungo manualmente entrambi, il pacchetto e la patch, al mio composer.json, non posso ancora requireo updatequesto modulo con il compositore a causa delle versioni in conflitto. Voglio davvero evitare di duplicare il /contribcodice nella /custombase di codice del mio progetto . La mia soluzione attuale è:
- biforcando quel modulo al mio repository git privato
- applicando la patch lì
- creando un nuovo
composer.jsonnel mio git privato e cambiando il fornitore del pacchetto in miocustom_private_vendor - aggiungendo il mio git privato come repository VCS nel progetto D9
composer.json - e poi
composer require custom_private_vendor/contrib_module
Questo soddisfa il mio obiettivo di non duplicare il modulo contrib nella base di codice personalizzata del mio progetto, ma ogni volta che lo faccio sento il bisogno di lavarmi le mani sporche.
C'è qualcosa di più elegante composer require drupal/contrib_module --apply-patch-firsto posso in qualche modo prendere di mira il git di drupal.org con una patch specifica inclusa?
Risposte
Hai l'idea giusta ma non hai bisogno di fare il fork del repository di Drupal. Puoi impostare il compositore per leggere il repository git di Drupal invece di usare packagist per i moduli cattivi come questo:
{
"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"
}
}
},
Nota che il "riferimento" è un hash di commit, anche se sembra che tu possa usare anche i tag .
E poi patch come di consueto usando il compositore:
"drupal_git/cache_control_override": {
"Drupal 9 Compatibility (3132036)": "https://www.drupal.org/files/issues/2020-04-29/Drupal-9-readiness-3132036-2.patch"
},
(Spudoratamente rubato da @acbramley su Drupal Slack perché vale la pena diffondere più facilmente questa conoscenza)