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
{ "require": { "phpmailer/phpmailer": "5.2.2" } }
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:
{ "require": { "phpmailer/phpmailer": ">=5.2.2 <5.3" } }
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
.
{ "require": { "phpmailer/phpmailer": ">5.2 || <= 5.4" } }
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:
{ "require": { "phpmailer/phpmailer": "5.2 - 6.0" } }
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:
{ "require": { "phpmailer/phpmailer": "∼5.2" } }
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:
{ "require": { "phpmailer/phpmailer": "∼5.2-stable" } }