Pouvez-vous me dire pourquoi avons-nous besoin de NPM 5
ou plus pour éviter les problèmes de versionnage sémantique? En d'autres termes, comment pouvons-nous l'éviter en utilisant le fichier package-lock.json
? Ne pouvons-nous pas éviter ce problème si nous utilisons le même fichier package.json
sur toutes les machines de développement pour le même projet? Je suis un peu confus ici. J'espère que vous donnerez un feedback pour cela.Problème de versionnage sémantique et npm 5 ou supérieur
Répondre
Cela peut être évité si vos package.json
listes de fichiers paquets comme:
"@angular/core": "4.2.6",
"@angular/forms": "4.2.6",
"@angular/http": "4.2.6",
au lieu de
"@angular/core": "^4.2.6",
"@angular/forms": "^4.2.6",
"@angular/http": "~4.2.6",
En retirant le tilde ou le capuchon (~, ^) signe package.json
MNP installer exacte même version sur toutes les machines. Mais il est prudent d'ajouter un signe tilde ou cap, de sorte que vous pouvez installer de petites mises à jour de vos paquets sans mettre à jour le fichier. Mais parfois, cela peut causer des problèmes, lorsque le développeur du paquet emballe un changement de rupture dans une petite version.
package-lock.json
fera de même, il supprime le signe tilde ou cap, et marque la version concrète de l'emballage à installer. Et fera la priorité du fichier de verrouillage pour obtenir les informations de version du paquet lors de l'installation des paquets.
Modifier: Belle explication de Angular University sur Youtube.
Merci beaucoup pour cette belle explication :) – Sampath