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


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

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

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

El compositor .json documentation 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).

Author: Gottlieb Notschnabel, 2013-09-24

2 answers

Tilde significa siguiente liberación significativa. En su caso, es equivalente a >= 2.0, < 3.0.

La explicación completa está en Tilde Version Range docs page :

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

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

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

 129
Author: AlterPHP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-07 13:45:55

Tilde operator es útil para los proyectos que versionan sus bibliotecas usando el esquema semantic versioning.

Semantic versioning es más bien una guía que evalúa a la next significant release.

Para Composer, este operador significa permitir versiones menores (que pueden incluir parches) sin permitir una versión mayor (que puede no ser compatible con versiones anteriores) mientras instala y actualiza.

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

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

 2
Author: Pranav Rana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-12 13:01:52