Cette page est la sœur de Les bases du développement de packages. Elle suppose une connaissance de base du développement de packages (service providers, structure du
composer.json, etc.).Réagir à la montée de version majeure de Laravel
Flux de prise en charge
Mettre à jour le require du composer.json
Ajoutez la nouvelle version à la plage de dépendances. Si vous conservez le support de versions anciennes, listez-les avec Une fois la prise en charge de la nouvelle version terminée et le support des anciennes versions abandonné, supprimez les contraintes anciennes.
||.Exécuter les tests avec la nouvelle version
Exécutez les tests avec la nouvelle version de Laravel en local ou en CI.Si les tests passent, la compatibilité de base est validée. Sinon, corrigez les API modifiées ou les méthodes supprimées.
Ajouter la nouvelle version à la matrice de tests GitHub Actions
Ajoutez la nouvelle version de Laravel à la matrice de test CI pour vérifier la compatibilité en continu. Consultez Exemple de configuration de matrice de tests pour les détails.
S’inspirer des packages officiels
En cas de doute sur la marche à suivre, référez-vous aucomposer.json des packages officiels Laravel : c’est la source la plus fiable.
Ces packages sont maintenus par l’équipe Laravel, prennent en charge les nouvelles versions le plus rapidement, et servent de référence pour la manière d’écrire les contraintes illuminate/*.
Mettre à jour la version PHP requise
Une montée de version de Laravel peut aussi élever la version minimale de PHP. Mettez à jour l’exigence PHP dans lecomposer.json du package en conséquence.
| Laravel | PHP minimum |
|---|---|
| Laravel 11 | PHP 8.2 |
| Laravel 12 | PHP 8.2 |
| Laravel 13 | PHP 8.3 |
| Laravel 14 | PHP 8.4 |
Adopter activement de nouvelles fonctionnalités PHP
Si vous voulez utiliser les nouveautés de PHP 8.3+ (constantes typées, nouvelles fonctions aléatoires, etc.), il faut décider de relever le minimum requis. Cette élévation est un changement cassant au sens du versionnage sémantique, il est donc approprié de la faire lors d’une montée en version majeure.Stratégie de fin de support des anciennes versions
Maintenir indéfiniment les anciennes versions augmente les coûts de maintenance sur le long terme. Définir une politique de support claire et retirer périodiquement le support d’anciennes versions contribue à une gestion saine du package.Quand mettre fin au support
L’approche courante consiste à s’aligner sur les durées de support de Laravel. Laravel offre 18 mois de corrections de bugs et 2 ans de correctifs de sécurité par version. Adopter la même politique dans votre package facilite la compréhension pour les utilisateurs.| Critère | Description |
|---|---|
| Fin du support officiel Laravel | Cesser de prendre en charge une version de Laravel lorsque son support arrive à échéance |
| Usage | Quand les statistiques de téléchargement Packagist montrent peu d’utilisateurs sur l’ancienne version |
| Frein à l’ajout de fonctionnalités | Lorsque le support de l’ancienne version complique l’implémentation de nouveautés |
Documenter la politique dans le README
Pour que les utilisateurs se fassent une juste idée, indiquez la politique de support dansREADME.md.
Coûts du maintien des anciennes versions
Continuer à supporter les anciennes versions engendre les coûts suivants :- Double correction de bugs — chaque bug doit être corrigé dans plusieurs branches.
- Multiplication du code de branchement — chaque version demande des implémentations séparées gérées par des conditions.
- Croissance de la matrice de tests — le temps d’exécution de la CI augmente.
- Complexification des correctifs de sécurité — les backports vers les anciennes versions doivent être sûrs.
Avantages d’une prise en charge précoce
Si la prise en charge est achevée en même temps que la sortie de Laravel, vos utilisateurs peuvent migrer immédiatement. C’est un signal fort de fiabilité du package.Vérifier en amont sur les versions de développement
Laravel ne publie pas de beta/RC ; en revanche, vous pouvez installer la version en cours de développement en spécifiantdev-master ou @dev. Vérifier le fonctionnement avant la release majeure permet une prise en charge « jour zéro ».
@dev.
minimum-stability à dev, vous permettez à Composer de résoudre les dépendances avec des versions de développement.
La première étape peut se limiter à modifier composer.json
Avant même la vérification exhaustive de compatibilité, il suffit de mettre à jour la plage de dépendances ducomposer.json et de publier pour que les utilisateurs puissent installer le package.
Comment suivre les annonces de release
Voici comment prendre connaissance rapidement des annonces des nouvelles versions.| Source | Contenu |
|---|---|
| GitHub Watch | Recevez des notifications par e-mail via « Watch → Custom → Releases » sur le dépôt. Suivre les autres packages majeurs au-delà de framework est également recommandé |
| Blog officiel Laravel | Annonces des releases majeures et présentation des nouveautés |
| Guide de mise à jour officiel | Liste des changements cassants |
| Journal de commits laravel/framework | Pour anticiper les changements de la prochaine version, suivre directement les commits |
Exemple de configuration de matrice de tests
Voici un exemple de workflow GitHub Actions testant automatiquement plusieurs combinaisons de versions Laravel et PHP.L’importance de fail-fast: false
Avecfail-fast: false, si une combinaison échoue, les autres combinaisons continuent d’être testées. Vous voyez donc en une seule exécution CI quelles combinaisons posent problème.
Mise à jour progressive de la matrice
À la sortie d’une nouvelle version de Laravel, ajoutez-la à la matrice. Quand vous cessez de supporter une ancienne version, retirez-la de la matrice.Exemple de composer.json
Voici un exemple complet decomposer.json supportant plusieurs versions.
Checklist de prise en charge d’une nouvelle version
Avant la sortie de la nouvelle version de Laravel
Avant la sortie de la nouvelle version de Laravel
- Vérifier le fonctionnement avec la version de développement (
dev-master/@dev) - Consulter le guide de mise à jour officiel pour les changements cassants
- Implémenter la prise en charge en environnement de test
- Ajouter la nouvelle version à la matrice CI et vérifier
Actions initiales juste après la release
Actions initiales juste après la release
- Ajouter la nouvelle version aux exigences
illuminate/*ducomposer.json - Mettre à jour l’exigence PHP au besoin
- Mettre à jour
orchestra/testbenchdansrequire-devvers la version compatible - Taguer la nouvelle version et la publier sur Packagist
- Mettre à jour le tableau de compatibilité du README
Fin de support d'une ancienne version
Fin de support d'une ancienne version
- Annoncer la fin de support dans le CHANGELOG/README
- Supprimer les contraintes de l’ancienne version dans le
composer.json - Retirer l’ancienne version de la matrice de tests
- Nettoyer les branchements de code liés à l’ancienne version
Pages associées
Les bases du développement de packages
Découvrez comment développer un package Laravel autour d’un service provider.
Tests avancés avec Pest
Découvrez comment tester un package avec l’Expectation API de Pest et les datasets.