Questa pagina è la sorella di Sviluppo di pacchetti Laravel. Si presuppone la conoscenza di base dello sviluppo dei pacchetti (service provider, struttura del
composer.json, ecc.).Adattarsi agli upgrade major di Laravel
Flusso operativo
Aggiornare require nel composer.json
Aggiungi la nuova versione al range di dipendenza. Se continui a supportare vecchie versioni, elencale con Completato il supporto alla nuova versione, se termini il supporto alle vecchie, rimuovi i vincoli obsoleti.
||.Eseguire i test sulla nuova versione
In locale o in CI esegui i test con la nuova versione di Laravel.Se i test passano, la compatibilità di base è confermata. In caso contrario correggi le API modificate o i metodi rimossi.
Aggiungere la nuova versione alla test matrix di GitHub Actions
Aggiungi la nuova versione di Laravel alla matrix di CI per verificare la compatibilità in modo continuo. Vedi Esempio di configurazione della test matrix.
Prendere spunto dai pacchetti ufficiali
Se sei incerto sull’approccio, il modo più sicuro è leggere ilcomposer.json dei pacchetti ufficiali Laravel.
Sono mantenuti dal team Laravel, sono i più veloci ad adattarsi alle nuove versioni e la loro sintassi di dipendenza illuminate/* è un buon riferimento.
Aggiornare il requisito di versione PHP
Un upgrade di Laravel a volte alza anche il requisito minimo di PHP. Aggiorna coerentemente anche il requisito PHP nelcomposer.json del pacchetto.
| Laravel | Requisito minimo PHP |
|---|---|
| Laravel 11 | PHP 8.2 |
| Laravel 12 | PHP 8.2 |
| Laravel 13 | PHP 8.3 |
| Laravel 14 | PHP 8.4 |
Se vuoi sfruttare funzionalità PHP recenti
Se vuoi usare feature di PHP 8.3+ (costanti tipizzate, nuove funzioni random, ecc.) è opportuno alzare il requisito minimo. Alzarlo, dal punto di vista del Semantic Versioning, è un breaking change: fallo in occasione di un upgrade major.Strategia di end-of-life per le versioni vecchie
Mantenere le vecchie versioni all’infinito aumenta il costo di manutenzione a lungo termine. Definire una policy chiara e chiudere periodicamente il supporto alle vecchie versioni è più salutare.Timing per la fine del supporto
L’approccio più comune è allinearsi al periodo di supporto di Laravel. Laravel offre 18 mesi di bugfix e 2 anni di security fix per ogni versione. Se il pacchetto adotta una policy analoga, gli utenti la capiscono facilmente.| Criterio | Descrizione |
|---|---|
| Fine supporto ufficiale di Laravel | Termina il supporto quando termina il supporto della versione Laravel |
| Utilizzo | Quando le statistiche di download su Packagist mostrano pochi utenti della vecchia versione |
| Difficoltà nell’aggiungere feature | Quando il supporto alla vecchia versione rende complicata l’implementazione di nuove funzionalità |
Documentare la policy nel README
Perché gli utenti abbiano aspettative corrette, indica la policy inREADME.md.
Costo del mantenimento delle vecchie versioni
Continuare a supportare le vecchie versioni comporta questi costi.- Doppio bugfix — devi correggere lo stesso bug su più branch
- Aumento del codice condizionale — la complessità di gestire implementazioni diverse per versione con branch condizionali
- Matrix di test più grande — i tempi di esecuzione CI si allungano
- Complicazione dei fix di sicurezza — backport sicuri verso versioni vecchie diventano più complessi
Vantaggi dell’adozione precoce
Se il tuo supporto è pronto insieme al rilascio di Laravel, gli utenti possono migrare subito. È un segnale importante di affidabilità del pacchetto.Verificare in anticipo su versioni di sviluppo
Laravel non pubblica beta o RC, ma puoi installare la prossima versione in sviluppo indicandodev-master o @dev. Verificando prima del release major, puoi supportare al giorno zero.
@dev.
minimum-stability su dev risolvi le dipendenze verso le versioni di sviluppo.
Il primo passo può essere la sola modifica del composer.json
Anche prima di aver verificato la compatibilità completa, aggiornare il range di dipendenze e rilasciare basta a rendere il pacchetto installabile.Seguire le notizie sui rilasci
Modi per stare al passo con le release delle nuove versioni.| Fonte | Contenuto |
|---|---|
| Watch di GitHub | Su ogni repository “Watch → Custom → Releases” per notifiche via email. Registra anche i pacchetti principali oltre a framework |
| Blog ufficiale Laravel | Annuncio delle major e spiegazione delle novità |
| Guida ufficiale all’upgrade | Lista dei breaking change |
| Commit log di laravel/framework | Seguire in anticipo le modifiche della prossima versione |
Esempio di configurazione della test matrix
Esempio di workflow GitHub Actions che testa automaticamente le combinazioni di più versioni di Laravel e PHP.L’importanza di fail-fast: false
Impostandofail-fast: false, quando una combinazione fallisce le altre continuano. In una sola esecuzione CI capisci in quali combinazioni si presenta il problema.
Aggiornamento graduale della matrix
Quando esce una nuova versione di Laravel, la aggiungi alla matrix. Quando termini il supporto di una vecchia, la rimuovi.Esempio di composer.json
Esempio completo dicomposer.json con supporto multi-versione.
Checklist per l’upgrade di versione
Prima del rilascio della nuova versione di Laravel
Prima del rilascio della nuova versione di Laravel
- Testare sulle versioni di sviluppo (
dev-master/@dev) - Verificare i breaking change sulla guida ufficiale di upgrade
- Implementare le modifiche di supporto in ambiente di test
- Aggiungere la nuova versione alla test matrix e verificare in CI
Prima operazione subito dopo il rilascio
Prima operazione subito dopo il rilascio
- Aggiungere la nuova versione ai requisiti
illuminate/*incomposer.json - Aggiornare eventualmente il requisito PHP
- Aggiornare anche
orchestra/testbenchinrequire-devalla versione compatibile - Taggare la nuova versione e sincronizzarla su Packagist
- Aggiornare la tabella di compatibilità nel README
Quando termini il supporto di vecchie versioni
Quando termini il supporto di vecchie versioni
- Documentare la fine del supporto in CHANGELOG/README
- Rimuovere i vincoli delle vecchie versioni dal
composer.json - Rimuovere le vecchie versioni dalla test matrix
- Riordinare il codice con branch condizionali per le versioni vecchie
Pagine correlate
Nozioni di sviluppo dei pacchetti
Come sviluppare pacchetti Laravel imperniati sui service provider.
Test avanzati con Pest
Come scrivere test dei pacchetti usando l’Expectation API e i dataset di Pest.