Maison  >  Article  >  interface Web  >  Introduction au numéro de version de la bibliothèque dans package.json dans Node.js

Introduction au numéro de version de la bibliothèque dans package.json dans Node.js

不言
不言avant
2019-04-02 10:15:561861parcourir

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

  • Rapide : chaque paquet téléchargé sera mis en cache, sans téléchargement répété, il peut être utilisé ; en parallèle Fiable avec une utilisation maximale des ressources
  • Utilisez un fichier de verrouillage détaillé et concis et un algorithme déterministe pour installer les dépendances, ce qui peut garantir que le processus d'installation exécuté sur un système s'exécutera également de la même manière sur d'autres systèmes. sur le système.
  • Sécurité : vérifiez l'intégrité du package d'installation avant son exécution.
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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer