La correspondance des chapeaux peut être considérée comme "cassée" parce qu'elle ne se met pas à jour. ^0.1.2
à 0.2.0
. Lorsque le logiciel est en cours d'utilisation 0.x.y
et la correspondance des chapeaux ne correspondra qu'au dernier chiffre variable ( y
). Ceci est fait exprès. La raison en est que lorsque le logiciel évolue, l'API change rapidement : un jour, vous avez ces méthodes et le lendemain, vous avez ces méthodes et les anciennes ont disparu. Si vous ne voulez pas casser le code pour les personnes qui utilisent déjà votre bibliothèque, vous allez incrémenter la version majeure : par exemple 1.0.0
-> 2.0.0
-> 3.0.0
. Ainsi, au moment où votre logiciel sera enfin terminé à 100% et complet, il sera comme une version 11.0.0
et cela n'a pas l'air très significatif, et semble même confus. Si vous utilisiez, d'un autre côté. 0.1.x
-> 0.2.x
-> 0.3.x
puis, lorsque le logiciel est enfin terminé à 100% et complet, il est publié en tant que version 1.0.0
et cela signifie "Cette version est un service à long terme, vous pouvez continuer et utiliser cette version de la bibliothèque dans votre code de production, et l'auteur ne changera pas tout demain, ou le mois prochain, et il n'abandonnera pas le paquet".
La règle est la suivante : utiliser 0.x.y
lorsque votre logiciel n'a pas encore atteint sa maturité et le publier en incrémentant le chiffre du milieu lorsque votre API publique est modifiée (les personnes qui ont des problèmes d'accès à l'information ne peuvent donc pas le faire). ^0.1.0
ne sera pas 0.2.0
mettre à jour et cela ne cassera pas leur code). Ensuite, lorsque le logiciel est mature, il faut le publier sous le nom de 1.0.0
et d'incrémenter le chiffre le plus à gauche à chaque fois que votre API publique est modifiée (par conséquent, les gens ayant ^1.0.0
ne sera pas 2.0.0
mettre à jour et que cela ne casse pas leur code).
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes,
MINOR version when you add functionality in a backwards-compatible manner, and
PATCH version when you make backwards-compatible bug fixes.
60 votes
Pour info, vous pouvez empêcher les préfixes ou en utiliser un personnalisé en faisant :
npm config set save-prefix=''
. (Bâton~
entre guillemets si c'est ce que vous préférez). Je fais personnellement cela et j'emballe sous film rétractable les choses en production.25 votes
Tous les détails minutieux sur le fonctionnement et les différences entre le tilde et le caret : github.com/npm/node-semver#tilde-ranges-123-12-1
13 votes
Cet outil est une aide précieuse pour tester semver.npmjs.com
1 votes
Version sémantique dans npm et node
1 votes
Docs pour
npm shrinkwrap
et package-lock.json vs npm-shrinkwrap.json #toSaveYouAGoogle (or two) -- fncomp mentions au-dessus de et tehfoo en dessous de . Aussi, mneumonique :~
reste à peu près égale,^
monte un peu plus haut.