2013-09-24 13 views
97

ho questa linea nel mio file composer.json:Che cosa significa la tilde (~) nel mio file composer.json?

"require": { 
    ... 
    "friendsofsymfony/user-bundle": "[email protected]", 
    ... 
}, 

Che cosa significa la tilde ~ in [email protected] significa esattamente? È un segnaposto e deve sempre recuperare le sovversioni come 1.2.0, 2.2.0, 3.2.0 e così via? Non ha senso (e sarebbe fatto dal jolly *).

Il composer.json documentation non dice nulla sulla tilde.

Sto chiedendo perché ho appena letto su un security issue in the Symfony blog e raccomandano di aggiornare alla versione 1.3.3. Ma capire la versione di FOSUserBundle non è così facile (non sono riuscito a trovare un file che contenga la versione).

risposta

123

Tilde significa prossima versione significativa. Nel tuo caso, è equivalente a >= 2.0, < 3.0.

La spiegazione completa è Tilde Version Range docs page:

L'operatore ~ è spiegato meglio con l'esempio: ~1.2 è equivalente a >=1.2 <2.0.0, mentre ~1.2.3 è equivalente a >=1.2.3 <1.3.0.

Un altro modo di osservare è che l'utilizzo di ~ specifica una versione minima di , ma consente di risalire l'ultima cifra specificata.

Il commento di Seldeak è una semplice spiegazione della documentazione di Composer.

+65

Un semplice modo regola empirica mi piace metterla è che il ~ permette l'ultima cifra a salire. per esempio. '~ 2.2' significa 2.2 e qualsiasi 2.x dove x è 2 o superiore. '~ 2.1.3' sul è anche qualsiasi 2.1.x dove x è 3 o superiore. – Seldaek

+1

In che modo '~ 2.0' è diverso da' 2. * '? È utile solo se l'ultima cifra non è 0? – Jesse

+18

~ 2.0 e 2. * sono gli stessi BUT ~ 2.3 e 2. * sono diversi perché ~ 2.3 non consente versioni inferiori a 2.3 mentre 2. * consente 2.0, 2.1, 2.2, ecc. – AlterPHP

2

Tilde L'operatore è utile per i progetti che eseguono la versione delle librerie utilizzando lo schema semantic versioning.

Semantic versioning è più di una linea guida che valuta il next significant release.

Per comporre, questo operatore significa permettere versioni minori (che possono includere patch) senza consentire una versione principale (che può non essere compatibile) mentre installazione e aggiornamento.

Ad esempio: ~4.1 consentirà versioni progetto >=4.1 ma <5.0.

Crediti: http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php

Problemi correlati