🚀 Composer Cheat Sheet für Drupal

Lesedauer des Inhalts
2 Minuten

Das Dokument deckt alle wesentlichen Bereiche ab: von der Projekteinrichtung über Modul- und Theme-Management bis hin zur Performance-Optimierung und Deployment-Strategien. Besonderer Fokus liegt auf der Integration von Drush-Kommandos, dem Patch-Management und der korrekten Verzeichnisstruktur für Composer-basierte Drupal-Projekte.

Diese Referenz dient als praktisches Nachschlagewerk für den täglichen Entwicklungsworkflow und enthält bewährte Praktiken aus der Drupal-Community. Sie unterstützt Entwickler dabei, ihre Produktivität zu steigern und häufige Fehler bei der Composer-Nutzung zu vermeiden.

Projekt Setup

Neues Drupal-Projekt erstellen

Standard Drupal-Projekt anlegen 

composer create-project drupal/recommended-project mein-projekt

 Mit spezifischer Version

composer create-project drupal/recommended-project:^11.2.3 mein-projekt

Ohne sofortige Installation

composer create-project --no-install drupal/recommended-project mein-projekt

Repository konfigurieren

composer config repositories.drupal composer https://packages.drupal.org/8

📦 Module & Themes verwalten

Installation

 Modul installieren

composer require drupal/admin_toolbar

Theme installieren

composer require drupal/bootstrap

Dev-Abhängigkeiten mitinnstallieren

composer require --dev drupal/devel

Spezifische Version

composer require drupal/pathauto:^1.8
composer require drupal/token:1.x-dev

Aktualisierungen

Alle Pakete aktualisieren

composer update

Spezifisches Paket aktualisieren

composer update drupal/admin_toolbar

Das Kernsystem (Drupal Core) mit Abhängigkeiten aktualieiren

composer update drupal/core --with-dependencies

Dry-Run (Test) 

composer update --dry-run

Paket Entfernen

composer remove drupal/admin_toolbar

🔍 Informationen & Debugging

Paket-Informationen

Alle installierten Pakete anzeigen

composer show
composer show --installed

Nur Drupal-Pakete anzeigen

composer show drupal/*

 Veraltete Pakete finden

composer outdated drupal/*

Paket-Details anzeigen

composer show -a drupal/admin_toolbar

Abhängigkeiten analysieren

Warum ist ein Paket installiert?

composer why drupal/token

 Warum kann ein Paket nicht installiert werden?

composer why-not drupal/problematic_module

Abhängigkeitsbaum anzeigen

composer show --tree

Suche

 Nach Paketen suchen 

composer search admin*tool* composer search "admin toolbar"

🛠️ Drush Integration

Drush Installation

composer require --dev drush/drush 

 Version prüfen 

./vendor/bin/drush --version 

 Status anzeigen 

./vendor/bin/drush status

Wichtigste Drush-Befehle

 Module aktivieren/deaktivieren 

./vendor/bin/drush en admin_toolbar 
./vendor/bin/drush dis admin_toolbar  

Datenbank-Updates 

./vendor/bin/drush updb  

Cache leeren 

./vendor/bin/drush cr  

Installierte Module auflisten 

./vendor/bin/drush pml 

 Sicherheitsupdates prüfen 

./vendor/bin/drush sec

🩹 Patch-Management

Patch-Plugin installieren

composer require cweagans/composer-patches

Composer.json Konfiguration

{  "extra": {    "enable-patching": true,    "composer-exit-on-patch-failure": true,    "patches": {      "drupal/core": {        "Fix für Issue #123456": "https://www.drupal.org/files/issues/patch.patch"      },      "drupal/views": {        "Lokaler Fix": "patches/views-fix.patch"      }    }  } }

⚡ Performance & Optimierung

Composer optimieren

 Composer selbst aktualisieren 

composer self-update 

 Autoloader optimieren 

composer dump-autoload --optimize  

Cache leeren 

composer clear-cache 

 Memory-Limit erhöhen (temporär) 

php -d memory_limit=2G composer require drupal/large-module

Produktivinstallation

composer install --no-dev --optimize-autoloader --no-suggest

🔧 Validierung & Maintenance

Projektvalidierung

 Composer.json validieren 

composer validate 

 Diagnose ausführen 

composer diagnose  

Veraltete Pakete prüfen 

composer outdated 

 Sicherheitsprobleme prüfen 

composer audit

📁 Typische Verzeichnisstruktur

mein-projekt/

├── composer.json           Abhängigkeiten & Konfiguration

├── composer.lock           Exakte Versionen (committen!)

├── vendor/                 Composer-Abhängigkeiten (nicht committen)

├── web/                    Webroot

│   ├── core/               Drupal Core (nicht committen)

│   ├── modules/

│   │   ├── contrib/        Contrib-Module (nicht committen)

│   │   └── custom/         Custom-Module (committen)

│   ├── themes/

│   │   ├── contrib/        Contrib-Themes (nicht committen)

│   │   └── custom/         Custom-Themes (committen)

│   └── sites/

└── config/                 Konfiguration (committen)


 

🗂️ .gitignore Beispiel

gitignore

 Composer

/vendor/

/web/core/

/web/modules/contrib/

/web/themes/contrib/

/web/profiles/contrib/

/web/libraries/

Drupal

/web/sites/*/files/

/web/sites/*/private/

/web/sites/*/translations/

 Behalten

!/web/sites/default/settings.php

!/web/sites/default/services.yml

 

🚀 Workflows

Entwicklung

1. composer require drupal/modulname 

2. ./vendor/bin/drush en modulname 

3. git add composer.json composer.lock 

4. git commit -m "Add modulname"

Deployment

1. git pull 

2. composer install --no-dev --optimize-autoloader 

3. ./vendor/bin/drush updb -y 

4. ./vendor/bin/drush cr

Aktualisierungen

1. composer outdated drupal/* 

2. composer update --dry-run 

3. composer update 

4. ./vendor/bin/drush updb -y 

5. ./vendor/bin/drush cr 

6. git add composer.json composer.lock 

7. git commit -m "Abhängigkeiten aktualisiert"

💡 Tipps & Best Practices

  • Immer composer.lock committen für identische Versionen im Team
  • Nie /vendor/ committen - wird bei composer install generiert
  • --dry-run vor großen Updates verwenden
  • Memory-Limit erhöhen bei großen Modulen
  • Regelmäßig composer outdated prüfen
  • Patches dokumentieren in separater README
  • Dev-Dependencies für lokale Entwicklung nutzen

Über Joachim

Autorenprofil
Image
Joachim

Joachim ist eine zentrale Figur in der deutschen Drupal-Community und bringt seit über einem Jahrzehnt bedeutende Beiträge zur deutschsprachigen Verbreitung des Content-Management-Systems Drupal ein.

Tags

Kommentare

Du hast eine Projektidee?

Du hast eine Projektidee oder Fragen zu Drupal?


Du hast Themen rund um Drupal oder brauchst Unterstützung bei einer Projektidee? Wir helfen dir weiter.