Que signifie le tilde (~) dans mon fichier composer.json?

J’ai cette ligne dans mon fichier composer.json:

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

Que signifie exactement le tilde ~ ~2.0@dev ? Est-ce un espace réservé et va toujours chercher les subversions comme 1.2.0 , 2.2.0 , 3.2.0 et ainsi de suite? Cela n’a aucun sens (et serait fait par le caractère générique * ).

La documentation composer.json ne dit rien sur le tilde.

Je vous le demande car je viens de lire un problème de sécurité sur le blog Symfony et ils recommandent de passer à la version 1.3.3. Mais comprendre la version de FOSUserBundle n’est pas si simple (je n’ai pas trouvé de fichier contenant la version).

Tilde signifie la prochaine version significative . Dans votre cas, cela équivaut à >= 2.0, < 3.0 .

L'explication complète se trouve à la page de documentation de Tilde Version Range :

L'opérateur ~ est mieux expliqué par l'exemple: ~1.2 est équivalent à >=1.2 <2.0.0 , tandis que ~1.2.3 est équivalent à >=1.2.3 <1.3.0 .

Une autre façon de voir cela est que l'utilisation de ~ spécifie une version minimale, mais permet d'augmenter le dernier chiffre spécifié.

Le commentaire ci-dessous de Seldeak est une simple explication de la documentation de Composer.

Tilde opérateur Tilde est utile pour les projets qui mettent à jour leurs bibliothèques en utilisant semantic versioning schéma de semantic versioning .

Semantic versioning est plutôt une directive qui évalue la next significant release .

Pour Composer, cet opérateur signifie autoriser les versions mineures (pouvant inclure des correctifs) sans autoriser une version majeure (qui peut ne pas être compatible avec les versions antérieures) lors de l’ installation et de la mise à jour .

Par exemple: ~4.1 autorisera les versions de projet >=4.1 mais <5.0 .

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