🚀 Composer Cheat Sheet für Drupal

31 August 2025
Lesedauer des Inhalts
3 Minuten
💡

Keyfacts & Tkeaways

Bevor wir in die Details gehen, hier das Wichtigste auf einen Blick:

  • Zentrale Schaltstelle: Composer steuert deinen gesamten Drupal-Lifecycle – vom Projekt-Setup über Modul-Updates bis hin zum Patch-Management und Deployment.
  • Versionskontrolle ist Pflicht: Die composer.lock Datei garantiert, dass alle Teammitglieder und Server exakt die gleichen Paketversionen nutzen; der /vendor-Ordner gehört hingegen nie ins Git.
  • Performance für Live-Seiten: Nutze im Deployment immer composer install --no-dev --optimize-autoloader, um die Seite schnell zu halten und Entwickler-Tools auf dem Produktionsserver zu vermeiden.

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
🔗

Vertiefe dein Wissen oder siehe dir die Quellen an:

Geschrieben von

Joachim
Über
Image

Joachim (Profil auf Drupal.org) ist : Dein Drupal Brückenbauer

Ziel: Die Komplexität von Drupal und der damit in Verbindung stehenden Linux-Infrastruktur für dich abbauen, um Dir den schnellstmöglichen…

Tags

Kommentare