Maison > Article > interface Web > Introduction au numéro de version de la bibliothèque dans package.json dans Node.js
Cet article vous présente le numéro de version de la bibliothèque package.json dans Node.js. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
~La différence entre ^
J'ai rencontré des problèmes récemment. Cela fonctionne bien localement, mais des problèmes surviennent en ligne, et je n'arrive pas non plus à les reproduire localement. . Plus tard, après avoir supprimé le répertoire node_modules et l'avoir réinstallé, le problème a été reproduit localement. J'ai pu consulter l'historique de git et j'ai constaté que personne n'avait modifié le numéro de version dans package.json, j'ai donc examiné de plus près la bibliothèque dans le package. .json Numéro de version ; La différence entre
~ et ^
"babel-loader": "^7.1.1", "body-parser": "~1.15.2"
npm install --save xxx, donnera la priorité à l'utilisation de ^
au lieu de ~
vers la version Par exemple, x.y.z
x : numéro de version majeure, lorsque vous effectuez des modifications d'API incompatibles
y : numéro de version mineure, lorsque vous effectuez des problèmes fonctionnels rétrocompatibles
z : numéro de révision, lorsque vous corrigez le problème de rétrocompatibilité
~x.y.z
, elle sera mise à jour vers la dernière version de y, par exemple body-parser
: ~1.15.2, cette bibliothèque correspondra à la dernière version de 1.15.z , si 1.16.0 apparaît, elle ne sera pas automatiquement mise à niveau ^x.y.z
, mais sera mise à jour vers la dernière version de x, par exemple babel-loader
: ^7.1.1, cette bibliothèque correspondra à la dernière version de 7. y.z, Si 8.1.1 apparaît, il ne sera pas automatiquement mis à jour
Vous pouvez vous référer à l'explication officielle donnée par npm
^1.2.3 := >=1.2.3 <2.0.0
^ 0.2.3 := >=0.2.3 <0.3.0
^0.0.3 := >=0.0.3 <0.0.4
Suivez cette version dans dans la plupart des cas, il n'y a aucun problème avec les packages de dépendances selon les règles numériques, mais npm est un monde open source, et tous ne suivent pas strictement cette règle, donc les problèmes ci-dessus se produiront
Pourquoi le verrouillage des packages ; est nécessaire
Il existe plusieurs raisons possibles comme suit. Dans certains cas, package.json ne peut pas garantir que les versions de dépendance installées après l'exécution de npm install sur le propre ordinateur de chacun sont les mêmes
1. package La version du package dépendant enregistrée dans .json est une plage de versions Une fois npm i exécuté, le package sera mis à jour vers la dernière version
2. A 1.1.1), mais votre package dépendant A peut dépendre d'un autre package B, et A peut également utiliser le nom semser lors de la déclaration des dépendances, comme ^1.2.3. Si le package B publie une nouvelle version, le package B sera également installé. vers une version plus récente
3. Différentes personnes utilisent différentes versions du programme npm
Si les versions des packages dépendants sont incohérentes, cela entraînera un comportement incohérent entre l'environnement de développement et l'environnement de production ; entraînera des différences dans les environnements de produits des différents membres de l'équipe
Comment résoudre le problème des versions de package incohérentes
1.npm Utilisez le fichier package-lock.json pour résoudre ce problème
L'exécution de l'installation npm générera automatiquement le fichier package.json, tant que vous effectuez une installation normale, des mises à jour, etc. les commandes npm susceptibles de modifier package.json, le fichier package-lock.json sera être automatiquement modifié de manière synchrone
npm install xxx npm rm xxx npm update xxx
2.npm prend également en charge npm-shrinkwrap.json, il a exactement la même fonction que package-lock.json
Executenpm shrinkwrap
pour générer npm- Shrinkwrap.json
Cette commande en créera un nouveau ou écrasera le npm-shrinkwrap.json existant en fonction du fichier package-lock.json. Les fichiers créés et mis à jour par cette commande auront priorité sur tout autre fichier package-lock.json existant ou futur.
3. Utiliser du fil
L'utilisation du fil présente les principaux avantages suivants
yarn est plus rapide que npm Le fichier de verrouillage de Yarn est Yarn.lock, ce qui peut résoudre le problème de. versions de package incohérentes
[Recommandations associées : Tutoriel vidéo JavaScript]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!