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.