Cosa significa la tilde (~) nel mio file composer.json?


115

Ho questa riga nel mio file composer.json:

"require": {
    ...
    "friendsofsymfony/user-bundle": "~2.0@dev",
    ...
},

Cosa significa esattamente la tilde ~in ~2.0@dev? Che è un segnaposto e devono sempre recuperare i sovvertimenti come 1.2.0, 2.2.0, 3.2.0e così via? Non ha senso (e sarebbe fatto dal *carattere jolly).

La documentazione di composer.json non dice nulla sulla tilde.

Lo chiedo perché ho appena letto di un problema di sicurezza nel blog di Symfony e mi consigliano 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).

Risposte:


142

Tilde significa prossimo rilascio significativo . Nel tuo caso, è equivalente a >= 2.0, < 3.0.

La spiegazione completa è alla pagina dei documenti dell'intervallo di versioni di Tilde :

L' ~operatore è spiegato al meglio con un 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 vederlo è che using ~specifica una versione minima, ma consente all'ultima cifra specificata di salire.

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


73
Una semplice regola pratica in cui mi piace metterla è che il ~ consente all'ultima cifra di salire. ad esempio, ~2.2significa 2.2 e qualsiasi 2.x dove x è 2 o superiore. ~2.1.3su è anche qualsiasi 2.1.x dove x è 3 o superiore.
Seldaek

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

24
~ 2.0 e 2. * sono gli stessi MA ~ 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

Tildeoperator è utile per i progetti che eseguono la versione delle loro librerie usando lo semantic versioningschema.

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

Per Composer, questo operatore significa consentire versioni minori (che possono includere patch) senza consentire una versione principale (che potrebbe non essere compatibile con le versioni precedenti) durante l' installazione e l' aggiornamento .

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

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


0

La tilde ~in ~2.0@dev esattamente media a salire per la versione immediato:

Per esempio :

Se lo abbiamo ~2.0@dev, passa immediatamente alla versione successiva => ~2.x@dev

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.