composer.json-Datei hinzufügen
Bei der Entwicklung von benutzerdefinierten Modulen gibt es mehrere Szenarien, in denen vom Entwickler erwartet wird, eine Datei composer.json in sein Modul einzufügen. Einige dieser Szenarien hängen davon ab, ob das benutzerdefinierte Modul als Projekt auf drupal.org an die Community weitergegeben werden soll.
Wenn der Modulentwickler eine PHP-Bibliothek verwenden möchte, die auf packagist.org gehostet wird, muss er eine composer.json-Datei in sein Projekt einfügen.
Wenn das Modul ein bereitgestelltes Modul auf drupal.org ist, Abhängigkeiten von anderen Modulen hat und Änderungen an diesen Abhängigkeiten testen möchte, indem es DrupalCI als Teil der Entwicklung verwendet, muss es eine composer.json haben, die diese Drupal-Modulabhängigkeiten ausdrückt (DrupalCI kann Änderungen an Abhängigkeiten nur in Patches innerhalb von composer.json erkennen, nicht in .info- oder .info.yml-Dateien).
Wenn der Modulentwickler ausdrucksvollere Einschränkungen verwenden möchte, die composer.json bietet, wie z.B. Insertionsoperatoren oder Tilden, sind diese nur in composer.json möglich. (Obwohl Drupal selbst sich nicht an diese Einschränkungen hält, werden sie nur während des Builds eingehalten, wenn der Endbenutzer Composer zur Erstellung seiner Website verwendet.)
Wenn das Modul keine Abhängigkeiten hat oder die Abhängigkeiten ausschließlich andere Drupal-Module sind, ist composer.json nicht erforderlich. Das Vorhandensein von composer.json hat jedoch keinen negativen Einfluss.
Unabhängig davon, ob der Entwickler eine composer.json-Datei hat, müssen die Abhängigkeiten seines Drupal-Moduls weiterhin in seinen .info.yml-Dateien ausgedrückt werden, damit Drupal sicherstellen kann, dass die richtigen Module eingeschaltet sind.
Definieren Sie Ihr Modul als PHP-Paket
Die breitere PHP-Community verwendet Composer zur Paketverwaltung; das ist auch in Drupal der Fall. Zum Beispiel hängt das Drupal-Projekt vom Paket „drupal/core“ ab. Der Pakettyp „drupal/core“ ist als „drupal-core“ definiert, sodass Composer weiß, wie damit umzugehen ist. Die Bibliothek composer/installers definiert mehrere Drupal-Typen. Diese sind:
- drupal-module
- drupal-theme
- drupal-library
- drupal-profile
- drupal-drush
Hier ist ein vollständiges Beispiel, wie das Projekt mobile_detect composer.json verwendet, um von dem externen Projekt mobiledetect/mobiledetectlib abhängig zu sein:
{ "name": "drupal/mobile_detect", "description": "Mobile_Detect ist eine leichte PHP-Klasse zur Erkennung mobiler Geräte.", "type": "drupal-module", "homepage": "https://drupal.org/project/mobile_detect", "authors": [ { "name": "Matthew Donadio (mpdonadio)", "homepage": "https://www.drupal.org/u/mpdonadio", "role": "Maintainer" }, { "name": "Darryl Norris (darol100)", "email": "admin@darrylnorris.com", "homepage": "https://www.drupal.org/u/darol100", "role": "Co-maintainer" } ], "support": { "issues": "https://drupal.org/project/issues/mobile_detect", "irc": "irc://irc.freenode.org/drupal-contribute", "source": "https://cgit.drupalcode.org/mobile_detect" }, "license": "GPL-2.0-or-later", "minimum-stability": "dev", "require": { "mobiledetect/mobiledetectlib": "~2.8" } }
Für die Benennung Ihres Pakets sollten Sie den Drupal Composer Namenskonventionen folgen.
Definieren von Abhängigkeiten in composer.json
Optional können Sie externe Abhängigkeiten für Ihr Modul in composer.json definieren. Der Drupal-Kern wird diese Abhängigkeiten nicht automatisch erkennen oder verwalten. Um Abhängigkeiten zu verwenden, die in der composer.json-Datei definiert sind, müssen Sie eine der folgenden Wartungsstrategien verwenden:
- Installieren Sie Drupal Core und Module mit Composer.
- Ändern Sie manuell die composer.json-Datei im Stammverzeichnis Ihrer Drupal-Installation.
Für weitere Informationen über Composer als Abhängigkeitsmanager für Drupal, sehen Sie sich den Vergleich von Composer und Drush Make als Abhängigkeitsmanager an.
Hinzufügen von Abhängigkeiten zu anderen Drupal-Modulen
Standardmäßig durchsucht Composer nur Pakete, die auf Packagist veröffentlicht sind, wenn es seine Abhängigkeiten auflöst. Die meisten Drupal-Module sind dort nicht veröffentlicht, da Drupal ein eigenes Repository besitzt. Deshalb können Sie Fehlermeldungen erhalten wie:
Das angeforderte Paket drupal/module wurde in keiner Version gefunden. Möglicherweise liegt ein Tippfehler im Paketnamen vor.
Sie können Composer anweisen, Drupal-Module im Repository packages.drupal.org zu suchen, indem Sie den folgenden Befehl ausführen:
$ composer config repositories.drupal composer https://packages.drupal.org/8
Dieser Befehl fügt folgenden Abschnitt in Ihre composer.json-Datei ein:
"repositories": { "drupal": { "type": "composer", "url": "https://packages.drupal.org/8" } }
Kompatibilität mit Drupal 9
Das Vorhandensein einer composer.json-Datei ist für die Kompatibilität mit Drupal 9 nicht erforderlich. Drupal 9 ist kompatibel mit info.yml-Dateien. Wenn Ihr Projekt eine composer.json-Datei enthält, ist das Vorhandensein einer Kompatibilität mit der Version drupal/core auch nicht zwingend erforderlich, um mit Drupal 9 kompatibel zu sein. Wenn Sie jedoch eine Versionsanforderung für drupal/core in Ihrem require-Abschnitt haben, muss diese mit Drupal 9 kompatibel sein.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.