133 votes

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 ~ dans ~2.0@dev ? Est-ce un espace réservé qui récupère toujours les sous-versions comme 1.2.0, 2.2.0, 3.2.0 et ainsi de suite ? Cela n'a pas de sens (et serait fait par le joker *).

La documentation de composer.json ne dit rien à propos du tilde.

Je demande ça car je viens de lire à propos d'un problème de sécurité dans le blog Symfony et ils recommandent de passer à la version 1.3.3. Mais trouver la version de FOSUserBundle n'est pas si simple (je n'ai pas pu trouver de fichier contenant la version).

160voto

AlterPHP Points 6053

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

L'explication complète se trouve sur la page de documentation des Plages de versions Tilde:

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

Une autre manière de le voir est que l'utilisation du ~ spécifie une version minimum, mais permet au dernier chiffre spécifié d'augmenter.

Le commentaire ci-dessous de Seldeak est un résumé simple de la documentation de Composer.

4voto

Pranav Rana Points 321

L'opérateur Tilde est utile pour les projets qui versionnent leurs bibliothèques en utilisant le schéma de versionnement sémantique.

Versionnement sémantique est plus une directive qui évalue à la prochaine version significative.

Pour Composer, cet opérateur signifie autoriser les versions mineures (qui peuvent inclure des correctifs) sans autoriser une version majeure (qui peut ne pas être rétrocompatible) lors de l'installation et de la mise à jour.

Par exemple : ~4.1 permettra aux 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

2voto

Dylan Kas Points 2212

Le tilde ~ est l'une des nombreuses contraintes qui peuvent être utilisées pour gérer les versions.

Opérateurs de sortie de version significative suivants (~, ^):

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

L'opérateur ^ se comporte de manière très similaire, mais il se rapproche de la sémantique de versionnement, et permettra toujours des mises à jour non cassantes. Par exemple ^1.2.3 est équivalent à >=1.2.3 <2.0.0 car aucune des sorties jusqu'à la 2.0 ne devrait briser la compatibilité ascendante. Pour les versions avant 1.0, il agit également avec la sécurité à l'esprit et traite ^0.3 comme >=0.3.0 <0.4.0

Plage de version avec hyphens (-)

Ensemble inclus de versions. Les versions partielles à droite incluent sont complétées avec un joker. Par exemple 1.0 - 2.0 est équivalent à >=1.0.0 <2.1 car le 2.0 devient 2.0.*. D'autre part, 1.0.0 - 2.1.0 est équivalent à >=1.0.0 <=2.1.0

Plage de version avec joker (.*)

Vous pouvez spécifier un motif avec un joker *. 1.0.* est l'équivalent de >=1.0 <1.1

Plage de version simple (>, >=, <, <=, !=)

En utilisant des opérateurs de comparaison, vous pouvez spécifier des plages de versions valides. Les opérateurs valides sont >, >=, <, <=, !=.

Vous pouvez définir plusieurs plages. Les plages séparées par un espace ( ) ou une virgule (,) seront traitées comme un ET logique. Un double pipe (||) sera traité comme un OU logique. ET a une priorité plus élevée que OU.

Et enfin Contrainte de version exacte

Vous pouvez spécifier la version exacte d'un package Exemple : 1.0.2

0voto

Selim Reza Points 31

Le tilde ~ dans ~2.0@dev signifie exactement de passer à la version immédiate supérieure :

Par exemple :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X