Gestire le versioni con Composer

Come abbiamo visto, è possibile specificare nel file composer.json quale versione specifica (esempio 1.2.* o 2.5) di ciascuna libreria vogliamo che Composer scarichi per noi. Queste versioni fanno ovviamente riferimento alle versioni che gli sviluppatori delle librerie gli assegnano.

È possibile specificare la versione di una libreria in diversi modi, definendo alcuni vincoli.

Versione esatta

Specificare la versione esatta di un pacchetto è il modo più semplice: è sufficiente indicare la versione precisa nel formato 5.2.2 , come abbiamo scritto in precedenza nella nostra guida a Composer

Intervallo di versioni (range)

Usando gli operatori di comparazione possiamo tenere la versione del pacchetto entro certi limiti che definiamo. Possiamo usare gli operatori >, >=, <, <= e !=.

È possibile definire range multipli usando uno spazio o una virgola per separarli. In questo caso saranno trattati come se fossero legati da operatore logico AND. Per usare l’operatore OR dobbiamo usare una doppia pipe ||

Esempio:

In questo caso la versione sarà maggiore o uguale a 5.2.2 e minore di 5.3.

Nell’esempio sottostante invece, richiediamo il pacchetto phpmailer/phpmailer in versione maggiore a 5.2 oppure minore o uguale a 5.4.1.

Intervallo con il trattino

Questa particolare forma serve per specificare versioni un range di versioni inclusive. Per esempio usando 5.2 - 6.0 diciamo di usare tutte le versioni 5.2 (inclusa) fino alla 6.0 (esclusa). Equivale, quindi a scrivere >=5.2 <6.0.

Esempio:

Usare l’asterisco (wildcard)

È possibile usare la wildcard * per specificare un range indefinito di possibile versioni, es. 5.2.* è equivalente a >=5.2 <5.3.

Prossima significativa versione

Quando ci riferiamo ad una versione, solitamente è indicata da una versione principale e una versione minore. Nell’esempio 5.2, facciamo riferimento alla release minore 2 della versione 5. È possibile usare l’operatore  per indicare a Composer di aggiornare quel pacchetto fino alla versione significativa più vicina. Indicando ∼5.2 il sistema scaricherà le versioni maggiori uguali a 5.2 e minori della prossima, cioè 6.

Esempio:

Vincoli di stabilità

Se non indicato diversamente, Composer aggiungerà automaticamente alla versione scelta un suffisso -dev o -stable. È possibile esplicitare questo comportamento aggiungendo manualmente il suffisso.

Esempio: