Calculateur de plages SemVer
Utilitaires d'API et de packages pour développeurs

Calculateur d'Intervalles et Compatibilité SemVer

Testez les plages de gestion sémantique de version (SemVer) avec accent circonflexe (^), tilde (~), tirets, x-ranges et pré-versions en temps réel.

Confidentialité 100% côté client
Zéro transmission au serveur
Préréglages:
Plage SemVer et saisie des candidats
Normalized:>=18.2.0 <19.0.0-0 || >=19.0.0 <20.0.0-0
Taux de satisfaction
50%(4 sur 8 valides)
Version minimale satisfaisante
v18.2.0
Version maximale satisfaisante
v19.0.1
StatutVersion TestéeRésultat et Justification
Satisfait18.2.0Satisfies clause #1 (^18.2.0): [18.2.0, 19.0.0)
Satisfait18.3.1Satisfies clause #1 (^18.2.0): [18.2.0, 19.0.0)
Satisfait19.0.0Satisfies clause #2 (^19.0.0): [19.0.0, 20.0.0)
Satisfait19.0.1Satisfies clause #2 (^19.0.0): [19.0.0, 20.0.0)
Rejeté19.1.0-canary.1preDoes not satisfy any clause in the range expression.
Rejeté18.1.9Does not satisfy any clause in the range expression.
Rejeté20.0.0Does not satisfy any clause in the range expression.
Rejeté17.0.2Does not satisfy any clause in the range expression.

Moteur SemVer 2.0 100% Côté Client

Évaluation instantanée et déterministe conforme aux spécifications officielles de npm et SemVer 2.0 sans surcharge réseau.

Confidentialité Absolue Zéro Transmission

Vos listes de dépendances privées et noms de paquets internes restent strictement isolés dans votre navigateur.

Support Exhaustif des Syntaxes d'Intervalle

Prise en charge complète de Caret (^), Tilde (~), plages avec tiret (-), jokers (*, 1.x), OR logique (||) et règles de pré-version.

Référence technique et guide d'architecture

Testeur de Plages SemVer et Satisfaction de Version – Guide Développeur — Guide de référence

Testez les plages de gestion sémantique de version (SemVer) avec accent circonflexe (^), tilde (~), tirets, x-ranges et pré-versions en temps réel.

Paramètres clés et contrôles

Expression de plage (Range Expression)String

Requête de plage SemVer prenant en charge les comparateurs (>=, <), circonflexes (^), tildes (~), jokers (1.x, *), plages à tiret (1.0.0 - 2.0.0) et unions (||).

Par défaut : ^1.2.3 || ~2.0.0
Version cible (Target Version)String

Chaîne de version à tester par rapport à la plage, prenant en charge les identifiants de pré-version et les métadonnées de compilation.

Par défaut : 1.4.0
Inclure les pré-versions (Include Pre-releases)Boolean

Lorsqu'il est activé, autorise les pré-versions (ex. : 1.3.0-rc.1) à satisfaire les plages même sans déclaration explicite de pré-version dans le comparateur.

Par défaut : false
Mode tolérant (Loose Mode)Boolean

Active l'analyse permissive pour les versions non canoniques (préfixes 'v', omission de chiffres de correctif comme 1.2 ou tolérance des espaces).

Par défaut : false

Conseils de pro et bonnes practices

Selon SemVer 2.0.0 et les règles npm

Selon SemVer 2.0.0 et les règles npm semver, ^0.2.3 restreint l'évolution à >=0.2.3 <0.3.0, car des ruptures d'API peuvent survenir sur les versions mineures 0.x. Pour ^0.0.3, la version est strictement figée à 0.0.3.

Une version comportant un identifiant

Une version comportant un identifiant de pré-version (ex. : 1.2.3-alpha.1) ne satisfera PAS une plage générale comme >=1.0.0, à moins qu'un comparateur de la plage ne partage le même triplet [major, minor, patch].

Les plages à tiret exigent des espaces

Les plages à tiret exigent des espaces de chaque côté ('1.2.3 - 2.0.0'). Leur omission ('1.2.3-2.0.0') amène l'analyseur à interpréter '-2.0.0' comme un suffixe de pré-version de 1.2.3.

D'après la clause 10 de SemVer 2.0.0

D'après la clause 10 de SemVer 2.0.0, les métadonnées de build (+build.2024, +sha.c0ffee) ont un poids nul dans la précédence : 1.0.0+1 et 1.0.0+999 partagent exactement le même rang.

Pièges courants et dépannage

Une version pré-release ne satisfait pas une plage large (ex. : 2.0.0-rc.1 rejetée par >=1.0.0)

SemVer isole délibérément les pré-versions pour éviter d'importer du code instable en production. Activez 'Inclure les pré-versions' ou définissez des bornes explicites comme '>=1.0.0 || >=2.0.0-0'.

L'analyseur rejette les versions préfixées par 'v' (ex. : 'v1.4.2')

La spécification stricte de SemVer 2.0.0 interdit le préfixe 'v'. Activez le 'Mode tolérant' ou nettoyez la chaîne avec semver.clean() avant l'évaluation.

Dérive inattendue des dépendances entre tilde (~) et circonflexe (^)

Rappelez-vous que ~1.2.3 restreint les montées de version aux correctifs (<1.3.0), tandis que ^1.2.3 autorise les ajouts mineurs (<2.0.0). Figez les versions de façon exacte (1.2.3) si des builds déterministes sont requis sans fichier de verrouillage.

Foire aux questions (FAQ)

Quelle est la différence fondamentale entre les opérateurs circonflexe (^) et tilde (~) ?▼

L'accent circonflexe (^) autorise les mises à jour ne modifiant pas le chiffre non nul le plus à gauche du triplet [major, minor, patch]. Par exemple, ^1.2.3 autorise >=1.2.3 <2.0.0, alors que ^0.2.3 autorise >=0.2.3 <0.3.0. Le tilde (~) autorise les correctifs lorsqu'une version mineure est spécifiée : ~1.2.3 permet >=1.2.3 <1.3.0 et ~1.2 permet >=1.2.0 <1.3.0.

Pourquoi une plage telle que '>=1.0.0 <3.0.0' rejette-t-elle '2.0.0-beta.1' ?▼

Selon la spécification npm semver, une pré-version ne peut satisfaire une plage que si cette plage contient un comparateur ayant le même triplet de version [major, minor, patch]. Comme ni 1.0.0 ni 3.0.0 ne correspondent à 2.0.0, la pré-version est exclue par défaut afin de préserver la stabilité.

Comment la précédence des identifiants de pré-version est-elle évaluée ?▼

Les identifiants de pré-version sont scindés par points et évalués de gauche à droite. Les identifiants uniquement numériques sont comparés sous forme de nombres, et les alphanumériques selon l'ordre ASCII. Les identifiants numériques ont toujours une priorité inférieure aux non-numériques (ex. : 1.0.0-1 < 1.0.0-alpha < 1.0.0-beta < 1.0.0).

Comment les jokers et plages X (ex. : '1.2.x', '1.*') sont-ils développés ?▼

Les plages X considèrent 'x', 'X' ou '*' comme des jokers pour les segments absents. '1.x' ou '1.*' se développe en '>=1.0.0 <2.0.0-0'. '1.2.x' ou '1.2.*' se développe en '>=1.2.0 <1.3.0-0'. Une chaîne vide ou '*' correspond à toute version SemVer valide (>=0.0.0).

Les métadonnées de compilation (+build) ont-elles un impact sur la correspondance des plages ?▼

Non. Conformément à la clause 10 de SemVer 2.0.0, les métadonnées de compilation sont ignorées lors du calcul de priorité. Deux versions qui ne diffèrent que par leurs métadonnées (telles que 1.0.0+build1 et 1.0.0+build2) satisfont exactement les mêmes plages.

Outils et utilitaires connexes

Tous les outils →