search

Found

info Aperçu

Vérifiez si une version correspond à une plage SemVer : circonflexes, tildes, plages x, comparateurs et trait d'union jusqu'aux versions minimale et maximale.

📘 Mode d'emploi

  1. Saisissez la version à tester dans le champ Version
  2. Saisissez l'expression de plage dans le champ Plage
  3. Lisez le Résultat, la Version minimale et la Version maximale

Vérificateur de Plage SemVer

Résultat
Signification de la plage
Version minimale
Version maximale
Analyse
Article

Vérificateur de Plage SemVer | Testez ^ ~ et les plages de version

Saisissez une version et une expression de plage pour voir si la version la satisfait. L'outil interprète les accents circonflexes (^), les tildes (~), les plages en x (1.x), les comparateurs (>=1.0.0 <2.0.0) et les plages à trait d'union (1.0.0 - 2.0.0), puis affiche un verdict Correspond / Ne correspond pas avec les versions minimale et maximale que la plage autorise.

💡 À propos de cet outil

Si vous avez déjà fixé une dépendance dans un package.json en vous demandant « est-ce que ^1.2.3 autorise vraiment 1.9.0 ? », voici la machine à réponses. Les opérateurs de plage SemVer semblent simples, mais chacun découpe une fenêtre différente. ^1.2.3 autorise tout jusqu'à 2.0.0 exclu. ~1.2.3 est bien plus strict : seulement les correctifs dans 1.2.x. Et le circonflexe change de comportement sous 1.0.0 : ^0.2.3 n'autorise que 0.2.x, car les versions mineures avant 1.0 sont considérées comme cassantes.

Le panneau minimum/maximum est ce qui fait gagner du temps de débogage. Au lieu de développer l'opérateur de tête, vous voyez directement les versions limites résolues, avec pour les plages ouvertes comme >=1.0.0. Combiné à l'explication en langage clair, vous pouvez contrôler la résolution d'un lockfile ou une proposition de mise à jour en quelques secondes, sans installer le paquet semver ni ouvrir un REPL.

🧐 Questions fréquentes

^1.2.3 inclut-il 2.0.0 ? Non. Le circonflexe autorise >=1.2.3 <2.0.0, donc 2.0.0 se situe juste hors de la fenêtre. Le panneau Version maximale affiche le plafond 1.x.

Quelle est la différence entre ^ et ~ ? Le circonflexe autorise les changements qui ne modifient pas le segment non nul le plus à gauche (généralement mineur et correctif). Le tilde n'autorise que les correctifs quand un mineur est précisé, donc ~1.2.3 admet 1.2.x mais pas 1.3.0.

Pourquoi ^0.2.3 se comporte-t-il différemment ? Sous 1.0.0, SemVer traite chaque changement de mineur comme potentiellement cassant. ^0.2.3 se résout donc en >=0.2.3 <0.3.0 et non en <1.0.0.

Comment sont gérées les préversions comme 1.0.0-beta ? Une préversion a une précédence inférieure à sa version finale, donc 1.0.0-beta se classe avant 1.0.0. Le vérificateur analyse l'étiquette de préversion et l'ordonne en conséquence lors du test de la plage.

Puis-je tester des plages composées ? Oui. Les comparateurs séparés par des espaces sont combinés par ET (>=1.0.0 <2.0.0), et || permet de combiner des plages entières par OU. La ligne d'explication indique quelle logique s'applique.

📚 Le saviez-vous

Le versionnage sémantique a été popularisé par Tom Preston-Werner, cofondateur de GitHub, qui a publié la spécification SemVer en 2010 pour combattre ce qu'il appelait « l'enfer des dépendances ». Les opérateurs ^ et ~ que la plupart des développeurs utilisent au quotidien ne font en réalité pas partie du cœur de la spécification SemVer : ils viennent de la bibliothèque node-semver de npm, devenue la grammaire de facto lorsque npm a adopté les plages avec circonflexe comme préfixe d'enregistrement par défaut. C'est ce réglage par défaut qui explique pourquoi votre package.json regorge de circonflexes : en lançant npm install lodash, npm écrit ^4.17.21, vous abonnant en silence à toutes les futures versions mineures et correctives de la lignée 4.x. D'autres écosystèmes ont repris l'idée en ajustant les règles : Cargo, en Rust, traite par défaut une exigence 1.2.3 simple comme un circonflexe.