web-dev-qa-db-fra.com

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",
    ...
},

Qu'est-ce que le tilde ~ dans ~2.0@dev signifie exactement? Est-ce un espace réservé et doit toujours aller chercher les subversions comme 1.2.0, 2.2.0, 3.2.0 etc? Cela n'a pas de sens (et serait fait par le * joker).

Le documentation composer.json ne dit rien du tilde.

Je pose la question parce que je viens de lire à propos d'un problème de sécurité sur le blog de Symfony et ils recommandent de passer à la version 1.3.3. Mais trouver la version de FOSUserBundle n’est pas si facile (je n’ai pas pu trouver un fichier contenant la version).

105

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

L’explication complète se trouve à page de la documentation sur la plage de versions Tilde :

Le ~ L’opérateur est mieux expliqué par l’exemple suivant: ~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 les choses est d'utiliser ~ spécifie une version minimale, mais permet au dernier chiffre spécifié d'augmenter.

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

133
AlterPHP

L'opérateur Tilde est utile pour les projets qui modifient leurs bibliothèques à l'aide de semantic versioning schéma.

Semantic versioning est plus une ligne directrice que le next significant release.

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

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

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

2
Pranav Rana

Le tilde ~ dans ~2.0@dev signifie exactement monter dans la version immédiate:

Par exemple:

Si nous avons ~2.0@dev il passe immédiatement à la prochaine version => ~2.x@dev

0
Selim Reza