¿Qué significa la tilde (~) en mi archivo composer.json?

115

Tengo esta línea en mi archivo composer.json:

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

¿Qué hace la tilde ~en ~2.0@devdecir exactamente? Es que un marcador de posición y siempre será buscar a los subversiones como 1.2.0, 2.2.0, 3.2.0y así sucesivamente? No tiene sentido (y lo haría el *comodín).

La documentación de composer.json no dice nada sobre la tilde.

Lo pregunto porque acabo de leer sobre un problema de seguridad en el blog de Symfony y recomiendan actualizar a la versión 1.3.3. Pero averiguar la versión de FOSUserBundle no es tan fácil (no pude encontrar un archivo que contenga la versión).

Gottlieb Notschnabel
fuente

Respuestas:

142

Tilde significa el próximo lanzamiento significativo . En su caso, es equivalente a >= 2.0, < 3.0.

La explicación completa está en la página de documentos de Tilde Version Range :

El ~operador se explica mejor con un ejemplo: ~1.2es equivalente a >=1.2 <2.0.0, mientras que ~1.2.3es equivalente a >=1.2.3 <1.3.0.

Otra forma de verlo es que using ~especifica una versión mínima, pero permite que suba el último dígito especificado.

El siguiente comentario de Seldeak es una explicación de resumen simple de la documentación de Composer.

AlterPHP
fuente
73
Una forma simple de utilizar una regla empírica que me gusta decir es que ~ permite que suba el último dígito. por ejemplo, ~2.2significa 2.2 y cualquier 2.x donde x es 2 o superior. ~2.1.3en el es también cualquier 2.1.x donde x es 3 o superior.
Seldaek
2
¿En qué se ~2.0diferencia de 2.*? ¿Solo es útil si el último dígito no es 0?
Jesse
24
~ 2.0 y 2. * son iguales PERO ~ 2.3 y 2. * son diferentes porque ~ 2.3 no permite versiones por debajo de 2.3 mientras que 2. * permite 2.0, 2.1, 2.2, etc
AlterPHP
2

TildeEl operador es útil para los proyectos que versionan sus bibliotecas usando el semantic versioningesquema.

Semantic versioninges más una pauta que evalúa el next significant release.

Para Composer, este operador significa permitir versiones menores (que pueden incluir parches) sin permitir una versión principal (que puede no ser compatible con versiones anteriores) durante la instalación y actualización .

Por ejemplo: ~4.1permitirá versiones del proyecto >=4.1pero <5.0.

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

Pranav Rana
fuente
0

La tilde ~en ~2.0@dev exactamente significa subir para la versión inmediata:

Por ejemplo :

Si lo tenemos ~2.0@dev, pasa a la próxima versión inmediata. => ~2.x@dev

Selim Reza
fuente