Gespeichert von Joachim am

Level 9: Dein Composer-Spellbook (Copy, Paste, Win)

Geschrieben von Joachim

1. Projekt-Setup

# Standard-Installation (aktuellste Version)
composer create-project drupal/recommended-project mein-projekt

# Bestimmte Version erzwingen (z. B. für Legacy-Support)
composer create-project drupal/recommended-project:^10.3 mein-projekt

2. Module & Themes verwalten

# Modul installieren
composer require drupal/modulname

# Dev-Tools installieren (nur lokal, z. B. Devel)
composer require --dev drupal/devel

# Spezifische Version anfordern
composer require drupal/token:^1.9

# Modul entfernen
composer remove drupal/modulname

3. Updates & Wartung

# Alles aktualisieren (Vorsicht!)
composer update

# Nur ein bestimmtes Modul updaten (sicherer)
composer update drupal/admin_toolbar

# Drupal Core updaten (inkl. Abhängigkeiten)
composer update drupal/core-recommended --with-dependencies

# Simulation: Was würde passieren? (vor großen Updates wichtig!)
composer update --dry-run

4. Debugging

# Warum ist dieses Paket überhaupt da?
composer why drupal/token

# Warum kann ich Paket X nicht installieren?
composer why-not drupal/problematic_module

# Alle veralteten Pakete anzeigen
composer outdated

5. Composer und Drush kombinieren

Composer holt den Code, Drush erledigt die Arbeit in der Datenbank. Der Standard-Workflow:

  1. composer require drupal/modulname – Code holen
  2. ./vendor/bin/drush en modulname – Modul aktivieren
  3. ./vendor/bin/drush cr – Cache leeren

6. Patches anwenden

Manchmal hat ein Modul einen Bug, den die Community schon gefixt hat, der aber noch nicht im Release ist. Patch-Plugin installieren:

composer require cweagans/composer-patches

In der composer.json:

"extra": {
 "patches": {
   "drupal/core": {
     "Fix Critical Bug #12345": "https://www.drupal.org/files/issues/fix.patch"
   }
 }
}

7. Deployment

# Installiert exakt die Versionen aus der .lock-Datei (keine Updates!)
# --no-dev lässt Test-Tools weg, --optimize-autoloader beschleunigt PHP
composer install --no-dev --optimize-autoloader

Verzeichnisstruktur: Was gehört ins Git?

  • Committen: composer.json (dein Wunschzettel), composer.lock (dein Kassenbon – extrem wichtig), /config (deine exportierten Drupal-Configs), /web/modules/custom (deine selbstgeschriebenen Module)
  • Ignorieren (.gitignore): /vendor, /web/core, /web/modules/contrib – Composer baut diese Ordner selbst

Ein typischer Arbeitstag

  1. Check: Gibt es Updates? → composer outdated
  2. Test: Trockenübung → composer update --dry-run
  3. Update: Ziehen → composer update
  4. DB-Sync: Datenbank anpassen → drush updb
  5. Clean: Cache leeren → drush cr
  6. Save: Commit → git add composer.json composer.lock