logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

composer.json-Datei hinzufügen

20/06/2025, by Ivan

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:

 

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.