Diese Seite ist die Schwesterseite zu Grundlagen der Paketentwicklung und setzt Grundwissen (Service Provider, Aufbau der
composer.json usw.) voraus.Umgang mit Laravel-Major-Upgrades
Ablauf
`require` in composer.json aktualisieren
Nehmen Sie die neue Version in den Dependency-Bereich auf. Wenn Sie ältere Versionen weiter unterstützen, listen Sie sie per Ist die Umstellung abgeschlossen und werden alte Versionen nicht mehr unterstützt, entfernen Sie die alte Bedingung.
|| daneben.Tests mit der neuen Version ausführen
Lassen Sie Ihre Tests lokal oder in der CI mit der neuen Laravel-Version laufen.Wenn die Tests grün sind, ist die grundlegende Kompatibilität geprüft. Andernfalls passen Sie sich an geänderte APIs oder entfernte Methoden an.
Neue Version in die Testmatrix in GitHub Actions aufnehmen
Fügen Sie die neue Laravel-Version in die CI-Matrix ein, damit die Kompatibilität kontinuierlich geprüft wird. Details siehe Beispielkonfiguration der Testmatrix.
Sich an offiziellen Paketen orientieren
Sind Sie unsicher, ist diecomposer.json offizieller Laravel-Pakete die verlässlichste Referenz.
Diese Pakete werden vom Laravel-Team gepflegt und sind bei neuen Versionen am schnellsten kompatibel. Auch das Notationsmuster für die illuminate/*-Versionen können Sie übernehmen.
PHP-Versionsanforderungen aktualisieren
Ein Laravel-Upgrade zieht oft auch die minimale PHP-Version nach oben. Aktualisieren Sie die PHP-Anforderung in dercomposer.json Ihres Pakets entsprechend.
| Laravel | Minimale PHP-Version |
|---|---|
| Laravel 11 | PHP 8.2 |
| Laravel 12 | PHP 8.2 |
| Laravel 13 | PHP 8.3 |
| Laravel 14 | PHP 8.4 |
Aktiv neue PHP-Features nutzen
Wollen Sie Features ab PHP 8.3 (getypte Konstanten, neue Zufallsfunktionen usw.) nutzen, müssen Sie die Mindestanforderung anheben. Das ist SemVer-technisch ein Breaking Change und gehört daher in ein Major-Upgrade.Strategie zur Einstellung alter Versionen
Alte Versionen unbegrenzt zu pflegen erhöht langfristig die Wartungskosten. Eine klare Support-Policy und der geplante Wegfall alter Versionen halten Ihr Paket gesund.Wann Sie Support beenden
Ein gängiger Ansatz ist, sich an Laravels Support-Zeitraum zu orientieren. Laravel bietet pro Version 18 Monate Bugfixes und 2 Jahre Security-Fixes. Wenn Ihr Paket derselben Policy folgt, wissen Nutzer, was sie erwarten dürfen.| Kriterium | Erläuterung |
|---|---|
| Ende des offiziellen Laravel-Supports | Sie beenden den Support parallel zur betreffenden Laravel-Version |
| Nutzung | Wenn die Downloads einer alten Version laut Packagist-Statistik gering sind |
| Feature-Hürde | Wenn alte Versionen die Implementierung neuer Features stark verkomplizieren |
Support-Policy im README dokumentieren
Damit Nutzer korrekte Erwartungen haben, dokumentieren Sie die Policy imREADME.md.
Kosten weiterer Alt-Unterstützung
Der Weiterbetrieb alter Versionen verursacht insbesondere:- Doppelte Bugfixes — derselbe Fehler in mehreren Branches.
- Bedingungscode — Komplexität durch Verzweigung nach Version.
- Aufgeblähte Testmatrix — CI-Laufzeiten steigen.
- Kompliziertere Security-Patches — sichere Backports auch für alte Versionen.
Vorteile früher Anpassung
Wenn Ihr Paket zeitgleich mit dem Laravel-Release kompatibel ist, können Nutzer sofort migrieren — ein starkes Vertrauenssignal.Vorabprüfung mit der Entwicklungsversion
Laravel veröffentlicht keine Beta/RC, stattdessen können Sie mitdev-master oder @dev die kommende Version installieren. So gelingt eine Zero-Day-Anpassung.
@dev-Constraint.
minimum-stability: dev können Sie Abhängigkeiten zu Entwicklungsversionen auflösen.
Der erste Schritt ist nur eine Änderung an composer.json
Auch vor der vollständigen Kompatibilitätsprüfung genügt es, den Dependency-Range in dercomposer.json zu aktualisieren und ein Release zu veröffentlichen — dann können Nutzer das Paket installieren.
Wie Sie Release-Informationen im Blick halten
Um neue Releases rechtzeitig mitzubekommen:| Quelle | Inhalt |
|---|---|
| GitHub-Watch | „Watch → Custom → Releases” ergibt E-Mail-Benachrichtigungen. Registrieren Sie neben framework auch weitere wichtige Pakete. |
| Offizieller Laravel-Blog | Ankündigungen und Feature-Erläuterungen zu Major-Releases |
| Offizielle Upgrade Guides | Übersicht der Breaking Changes |
| Commit-Log von laravel/framework | Für einen Blick auf die nächste Version vor dem offiziellen Release |
Beispielkonfiguration der Testmatrix
Beispiel einer GitHub-Actions-Workflow, die mehrere Laravel- und PHP-Kombinationen automatisiert prüft.Bedeutung von fail-fast: false
Mit fail-fast: false laufen bei einer fehlgeschlagenen Kombination die übrigen weiter. So sehen Sie in einem CI-Lauf, welche Kombinationen problematisch sind.
Testmatrix schrittweise pflegen
Nehmen Sie neu erschienene Laravel-Versionen in die Matrix auf und entfernen Sie alte, deren Support Sie beendet haben.Beispiel composer.json
Vollständiges Beispiel für Multi-Version-Support in einercomposer.json.
Checkliste für Versions-Upgrades
Vor einem neuen Laravel-Release
Vor einem neuen Laravel-Release
- Kompatibilität mit der Dev-Version (
dev-master/@dev) prüfen - Breaking Changes anhand des offiziellen Upgrade Guide sichten
- Neue Version in einer Test-Umgebung anpassen
- Neue Version in die Testmatrix aufnehmen und CI grün stellen
Erste Reaktion direkt nach dem Release
Erste Reaktion direkt nach dem Release
-
illuminate/*-Anforderungen incomposer.jsonum die neue Version ergänzen - Bei Bedarf die PHP-Anforderung aktualisieren
-
orchestra/testbenchinrequire-devauf die passende Version bringen - Neue Version taggen und auf Packagist bereitstellen
- Kompatibilitätstabelle in README aktualisieren
Beim Ende des Alt-Supports
Beim Ende des Alt-Supports
- CHANGELOG/README um Support-Ende ergänzen
- Alte Version aus
composer.jsonentfernen - Alte Version aus der Testmatrix entfernen
- Alten Bedingungscode aufräumen
Verwandte Seiten
Grundlagen der Paketentwicklung
Wie Sie Laravel-Pakete rund um Service Provider entwickeln.
Fortgeschrittenes Testen mit Pest
Pakettests mit Expectation API und Datasets in Pest.