Ich habe festgestellt , Abhängigkeiten in einem benutzerdefinierten Modul mit Drupal-Komponist , Wie kann ich einen Dritten Bibliothek in meinem benutzerdefinierten Modul umfassen ohne Composer - Manager und Wie contrib Module Komponist Abhängigkeiten von Drupal 8 verwalten , die auf meine Frage releated sind, aber keine scheinen länger zu gelten, seit Drupal 8.1 und die Abwertung des Composer-Managers .
Auch beliebte Anleitungen wie Die endgültige Einführung in D8 und Composer scheinen nicht mehr zu gelten, da sie auch den Composer Manager erwähnen.
Die andere Lösung, die sich dem Composer-Manager widersetzt, ist das Ändern der Core-Datei composer.json, die sich wie zu viel Core-Hacking anfühlt und wahrscheinlich mit jedem Drush-Update von Drupal Core (?) Brechen würde.
Insbesondere versuche ich, Views vCards von Drupal 7 auf 8 zu aktualisieren . Ich habe meine Datei composer.json wie folgt erstellt:
{
"name": "drupal/views_vcards",
"description": "Allows creation of vCards using the fields provided by the Views module.",
"type": "drupal-module",
"license": "GPL-2.0+",
"homepage": "https://drupal.org/project/views_vcards",
"require": {
"maennchen/zipstream-php": "0.3.*"
}
}
Aber wenn ich eine composer.json-Datei in meinen Modulordner lege, wie mache ich Drupal darauf aufmerksam, dass diese Datei vorhanden ist, und wie stelle ich sicher, dass die erforderliche zipstream-php
Bibliothek heruntergeladen wird?
Durch einfaches Ausführen composer update
aus dem Drupal-Stammverzeichnis werden viele Drupal-Abhängigkeiten aktualisiert, jedoch nicht die Dateien composer.json, die sich in den Modulordnern befinden. Ich gehe auch nicht davon aus, dass ich composer install
aus allen Modulen mit Abhängigkeiten heraus anrufen sollte .
Wie mache ich Drupal auf die Abhängigkeit eines Moduls aufmerksam, ohne den Composer Manager und / oder den Hacking Core zu verwenden?
AKTUALISIEREN:
Das vom Core verwendete Composer-Merge-Plugin scheint einen Platzhalterpfad zu unterstützen:
{
"require": {
"wikimedia/composer-merge-plugin": "dev-master"
},
"extra": {
"merge-plugin": {
"include": [
"composer.local.json",
"extensions/*/composer.json" // < ---- THIS LINE
],
"require": [
"submodule/composer.json"
],
"recurse": true,
"replace": false,
"merge-dev": true,
"merge-extra": false
}
}
}
Warum verschmilzt der Kern nicht modules/*/composer.json
, das würde alles richtig lösen?
Update 2:
Die Gründe dafür, dies nicht zu unterstützen, werden in dieser Ausgabe behandelt (die auch seit einiger Zeit still ist).
composer.json
Datei ist also die neue empfohlene Methode, und Drush zum Herunterladen und Installieren von Modulen wird ersetzt. Offensichtlich wird Composer verschachtelte Abhängigkeiten automatisch auflösen und tatsächlich auch meine Abhängigkeiten herunterladen.