Direkt zum Inhalt

Verwendung von Composer in einem Drupal Projekt

Bei der Entwicklung eines Drupal-Projekts mit Composer können Sie Module und Themes mit Composer-Befehlen installieren und diese Module und Themes auch mit Composer-Befehlen auf neue Versionen aktualisieren.
Taşkın Maksim
Taşkın Maksim
13 minuten lesen
drupal-de-composer

In diesem Artikel werden wir folgende Themen behandeln:

  • Die Verwendung von gängigen Composer-Befehlen Schritt für Schritt für ein Drupal-Projekt
  • Installation und Aktualisierung eines Drupal-Projekts (Kern, Module, Themes, Profile usw.) mit Composer
  • Umwandlung einer bestehenden Anwendung in eine Anwendung mit Composer

Am Ende dieses Artikels werden Sie gelernt haben, wie Sie Drupal-Module und -Themes mit Composer installieren und aktualisieren können.

Ziel

Erstellung eines Composer-basierten Drupal-Projekts und Installation von Drupal-Modulen und -Themen.

Voraussetzungen

  • Die neueste Version von Composer.

    composer self-update 

    befehl zur Aktualisierung von Composer.

  • Um die Datei composer.json für ein vorhandenes Drupal-Projekt zu erstellen, können Sie die folgenden Schritte befolgen.
  • Um alle Befehle für das vorhandene Drupal-Projekt im Hauptverzeichnis des Projekts auszuführen, können Sie die folgenden Schritte befolgen.

Ein neues Drupal-Projekt erstellen

Der einfachste Weg, ein Drupal-Projekt mit Composer zu erstellen, ist die Verwendung von Vorlagen. Composer create-project Dazu verwenden wir den Befehl composer create-project some/project wenn Sie den Befehl some/project Vorlage, um Ihr neues Projekt zu erstellen.

Ihr Projekt basiert auf dem Projekt "some/project". Zum Beispiel dient die composer.json-Datei in "some/project" als Ausgangspunkt für Ihr Projekt. Danach hat das Projekt "some/project" keinerlei Auswirkungen auf Ihr Projekt.

Auf der Drupal.org-Website finden Sie verschiedene beliebte Vorlagen zum Erstellen von Drupal-Projekten mit Composer.

NICHT: drupal/drupal Das Projekt wurde eingestellt und wird nicht empfohlen.

In diesem Artikel verwenden wir das hoch empfohlene und weit verbreitete Projekttemplate "drupal-composer/drupal-project". Dieses Template bietet ausreichende Konfiguration für die Entwicklung eines Drupal-Projekts mit Composer.

drupal-composer/drupal-project Führen wir den folgenden Befehl aus, um ein Drupal-Projekt mit der Vorlage zu entwickeln:

$ composer create-project drupal-composer/drupal-project:8.x-dev my-project --stability dev --no-interaction $ cd my-project

Für weitere Informationen drupal-composer/drupal-project die Dokumentation des Projekts.

Beginnen wir mit der Verwendung des Composers zur Verwaltung einer bestehenden Drupal-Anwendung

Es kann anfangs etwas schwierig sein, ein mit Composer nicht verwaltetes Drupal-Projekt mit Composer zu verwalten. Die genaue Methode, ein Drupal-Projekt mit Composer zu verwalten, hängt von der Verzeichnisstruktur der Drupal-Anwendung ab und erfordert zusätzliche Schritte.

Es gibt zahlreiche Tools, die den Prozess der Übersetzung eines Drupal-Projekts in eine Composer-Struktur automatisieren:

Wenn Sie mit den oben genannten Tools nicht weiterkommen, können Sie die folgenden Schritte durchführen.

  • Wechseln Sie mit dem Terminal in das Verzeichnis mit dem .git-Ordner. Es ist äußerst wichtig, dass Sie die Befehle aus dem richtigen Verzeichnis ausführen. Bei einigen Projekten kann der Ordner direkt das Drupal-Projekt enthalten. Bei anderen Projekten kann sich das Drupal-Projekt unter docroot/core und web/core befinden.
  • Löschen Sie die Datei "composer.json" und den Ordner "vendor". Es sollte nur eine composer.json-Datei und ein vendor-Ordner in Ihrem Projekt vorhanden sein. Wenn es eine alte oder unbenutzte composer.json oder einen Vendor-Ordner gibt, löschen Sie diese aus dem Projekt.

$ cd drupal/projesinin/yeri $ find . -name "composer.json" -exec rm -rf {} \; $ find . -name "composer.lock" -exec rm -rf {} \; $ find . -name "vendor" -exec rm -rf {} \;

Erstellen Sie eine neue composer.json-Datei nach der folgenden Vorlage:

{ "name": "drupalprojem", "license": "proprietary", "type": "project", "repositories": {   "drupal": {     "type": "composer",     "url": "https://packages.drupal.org/8"   },   "asset-packagist": {     "type": "composer",     "url": "https://asset-packagist.org"   } }, "require": {   "composer/installers": "^1.2.0",   "cweagans/composer-patches": "^1.6.4",   "drupal/composerize": "1.x-dev",   "drupal-composer/drupal-scaffold": "^2.4",   "oomphinc/composer-installers-extender": "^1.1",   "wikimedia/composer-merge-plugin": "^1.4.1" }, "require-dev": {   "drupal/console": "^1.0.2",   "drush/drush": "^9.0.0" }, "extra": {   "enable-patching": true,   "installer-types": ["bower-asset", "npm-asset"],   "installer-paths": {     "docroot/core": ["type:drupal-core"],     "docroot/modules/contrib/{$name}": ["type:drupal-module"],     "docroot/modules/custom/{$name}": ["type:drupal-custom-module"],     "docroot/profiles/contrib/{$name}": ["type:drupal-profile"],     "docroot/profiles/custom/{$name}": ["type:drupal-custom-profile"],     "docroot/themes/contrib/{$name}": ["type:drupal-theme"],     "docroot/themes/custom/{$name}": ["type:drupal-custom-theme"],     "docroot/libraries/{$name}": ["type:drupal-library", "type:bower-asset", "type:npm-asset"],     "drush/contrib/{$name}": ["type:drupal-drush"],     "special/package/dir/": ["my/package"]   },   "merge-plugin": {     "include": [       "docroot/modules/custom/*/composer.json"     ],     "replace": false,     "ignore-duplicates": true   },   "patches": {} }, "minimum-stability": "dev", "prefer-stable": true }

  • Das obige Beispiel geht davon aus, dass sich Drupal in einem docroot-Unterverzeichnis befindet. Ersetzen Sie alle Zeichenfolgen, die "docroot" enthalten, um Ihre Verzeichnisstruktur korrekt abzubilden.
  • Ersetzen Sie "name" durch den Namen Ihres Projekts
  • Fügen Sie Drupal Core mit dem Befehl composer require drupal/core 8.6.0 zu Ihrem Projekt hinzu.

    Nun haben Sie eine funktionale composer.json-Datei, die es Ihnen ermöglicht, Drupal Core und eine Drupal-Site ordnungsgemäß mit Composer zu verwalten, wobei verschiedene erforderliche Erweiterungen vorhanden sind.

Jetzt können Sie Module, Themen, Profile und ähnliches mit Composer installieren. Dies ist ein manueller Prozess, der Ihre Überprüfung erfordert.

Um weitere Module zum Projekt hinzuzufügen, verwenden Sie den Befehl "composer require drupal/[Modul-Name]". Dadurch wird die neueste stabile Version des Moduls installiert oder, wenn es bereits installiert ist, auf die angegebene Version aktualisiert. Wenn Sie eine bestimmte Version angeben möchten, können Sie dies mit dem Befehl "composer require drupal/[Modul-Name] [Version]" tun.

Führen Sie diesen Befehl für alle Contrib-Module von Drupal aus. Sie können ihn auch verwenden, um andere Module zu installieren. Verwenden Sie "drush", um alle mit "drush" installierten Module aufzulisten. Beachten Sie, dass "drush" lokal installiert sein muss. "drush" führt Datenbankabfragen aus und listet die installierten Module in Drupal auf.

 $ ./vendor/bin/drush pml --no-core --status=enabled ---------------- --------------------------------------- --------- ---------------- Package          Name                                    Status       Version ---------------- --------------------------------------- --------- ---------------- Administration   Admin Toolbar (admin_toolbar)           Enabled      8.x-1.27 ---------------- --------------------------------------- --------- ----------------

Löschen wir die Contrib-Module aus der Versionskontrolle (git), wie es sich gehört.

Fügen Sie die folgenden Zeilen zu einer neuen oder bestehenden .gitignore Datei hinzu:

docroot/core docroot/modules/contrib docroot/themes/contrib docroot/profiles/contrib docroot/libraries

Löschen Sie nach dem Hinzufügen die folgenden Dateien aus der Versionskontrolle:

git rm --cached docroot/core git rm --cached docroot/modules/contrib git rm --cached docroot/themes/contrib git rm --cached docroot/profiles/contrib git rm --cached docroot/libraries git rm --cached vendor  

Wenn Sie den Fehler "fatal: pathspec 'vendor' did not match any files" erhalten, liegt dies daran, dass die entsprechenden Dateien oder Ordner in Ihrem Verzeichnis nicht vorhanden sind. Dies ist normal.

Ja, das ist richtig. Sie haben das Drupal-Projekt erfolgreich in eine Composer-Struktur umgewandelt.

Erstellen eines neuen Drupal-Projekts mit Composer

Um das Drupal-Paket zu installieren, führen Sie zunächst den folgenden Befehl unter Verwendung der obigen composer.json-Vorlage aus. Die composer.json-Datei sollte mindestens den Eintrag repositories und die Konfiguration der installer-paths enthalten.

$ composer require drupal/[proje]

Um das "pathauto" Modul mit Composer zu installieren:

$ composer require drupal/pathauto

Standardmäßig wird damit die neueste Version installiert, um die spezifische Version zu installieren:

$ composer require drupal/pathauto 1.0.0

Dieser Befehl kann Fehler verursachen, wenn die Abhängigkeiten anderer Module nicht erfüllt sind. In diesem Fall können Sie versuchen, die Version anzupassen, bis die Abhängigkeiten erfüllt sind, oder Sie können die neueste Version installieren. Außerdem bedeutet "install" auf Composer-Ebene das Herunterladen der Pakete, Aktualisieren der composer.lock-Datei und Bereitstellen des Codes über den Autoloader, um ihn verwendbar zu machen. Dennoch müssen Sie das Drupal-Projekt entweder über die Benutzeroberfläche oder über Drush in die Drupal-Datenbank installieren.

Abhängige Module aktualisieren

Um ein beliebiges Modul zu aktualisieren:

composer update [vendor]/[package]

Zum Beispiel um drupal/pathauto zu aktualisieren:

$ composer update drupal/pathauto

Dies aktualisiert nur das drupal/pathauto-Modul, auch wenn es ein abhängiges Modul dieses Moduls ist.

So aktualisieren Sie das Modul mit seinen abhängigen Modulen:

$ composer update drupal/pathauto --with-all-dependencies

Zur Aktualisierung durch Angabe der Mindestversion:

$ composer require drupal/pathauto:^1.1.0 --update-with-all-dependencies

Um alle Module zu aktualisieren:

$ composer update

Wie bei jeder Aktualisierung eines Drupal-Projekts sollten Sie nach dem Herunterladen des neuen Moduls eine Datenbankaktualisierung durchführen. Wenn Sie Drupal Configuration Management verwenden, sollten Sie die Konfigurationen nach der Datenbankaktualisierung erneut exportieren.

Aktualisieren von Drupal Core mit Composer

Drupal Core kann mit Composer wie jedes andere Modul aktualisiert werden. Wie bei den obigen Schritten können Sie drupal/core aktualisieren, indem Sie drupal/core anstelle des Modulnamens angeben und die Befehle ausführen. Es ist eine gute Idee, eine neue Mindestversion für drupal/core zu setzen, damit nicht versehentlich ein Downgrade durchgeführt wird.

Wie bei jeder Aktualisierung eines Drupal-Projekts sollten Sie nach dem Herunterladen des neuen Moduls eine Aktualisierung der Datenbank durchführen.

Laden der Abhängigkeiten eines Moduls mit Composer

Nehmen wir an, es gibt ein Modul, das wir nicht mit Composer installiert haben. Wie installieren wir die Abhängigkeiten, die in der composer.json-Datei dieses Moduls aufgeführt sind? Wenn Sie sich diese Frage stellen, sind Sie eigentlich auf dem falschen Weg. Sie müssen zunächst den Composer verwenden, um das gesamte Drupal-Projekt zu verwalten, und das Modul mit dem Composer installieren. Dann werden seine Abhängigkeiten automatisch für Sie installiert.

Wenn das Modul Ludwig unterstützt, können Sie alternativ zum Composer auch Ludwig verwenden, um die Abhängigkeiten des Moduls zu installieren.

Unsere Büros

Drupart Locations

Unsere Buros

Wiesbaden

Hinterbergstraße 27
65207 Wiesbaden
Deutschland

+49 (0) 6151 – 492 70 23

[email protected]

London

151 West Green Road, London, England

+44 203 815 6478

[email protected]

Newark

112 Capitol Trail Suite, A437 Newark DE, 19711

+1 (740) 666 6255

[email protected]

Istanbul

GOSB Teknopark Hi-Tech Bina 3.Kat B3 Gebze - KOCAELİ

+49 (0) 6151 – 492 70 23

[email protected]