Après avoir mis à jour mon NPM vers la dernière version (de 3.X à 5.2.0) et exécuté npm install
sur un projet existant, j'obtiens un package-lock.json
fichier créé automatiquement .
Je peux dire package-lock.json
me donne un arbre de dépendances exact par opposition à package.json
.
À partir de cette seule information, il semble que ce package.json
soit redondant et plus nécessaire.
Les deux sont-ils nécessaires au fonctionnement du NMP?
Est-il sûr ou possible d'utiliser uniquement le package-lock.json
fichier?
La documentation sur package-lock.json ( doc1 , doc2 ) ne mentionne rien à ce sujet.
Modifier :
Après réflexion, je suis arrivé à la conclusion que si quelqu'un voulait utiliser votre projet avec une ancienne version de NPM (avant 5.x), il installerait toujours toutes les dépendances, mais avec des versions moins précises (versions de correctif)
la source
Réponses:
Avez-vous besoin des deux
package-lock.json
etpackage.json
? Non .Avez-vous besoin du
package.json
? Oui .Pouvez-vous avoir un projet avec seulement le
package-lock.json
? Non .Le
package.json
est utilisé pour plus que des dépendances - comme la définition des propriétés du projet, la description, les informations sur l'auteur et la licence, les scripts, etc. Lepackage-lock.json
est uniquement utilisé pour verrouiller les dépendances sur un numéro de version spécifique.la source
package-lock.json
: enregistre la version exacte de chaque paquet installé, ce qui vous permet de les réinstaller. Les futures installations pourront créer une arborescence de dépendances identique.package.json
: enregistre la version minimale dont votre application a besoin. Si vous mettez à jour les versions d'un package particulier, la modification ne sera pas reflétée ici.la source
package.json
enregistre la version minimale requise par l'application et package-lock.json enregistre la version exacte de chaque package installé, alors j'ai une situation étrange où un module est défini à la version 0.112.1 dans le package .json et 0.110.0 dans package-lock.json ...Si votre question est de savoir si le fichier de verrouillage doit être validé dans votre contrôle de source, il le devrait. Il sera ignoré dans certaines circonstances.
Je l'ai trouvé gonflant dans les demandes de tirage et dans l'historique des commit, donc si vous le voyez changer, faites un commit séparé pour cela.
la source
package-lock.json
semble être une version plus détaillée depackage.json
, il est donc sûr ou possible d'utiliser uniquement le fichier de verrouillage.package-lock.json
sous contrôle de version.Une explication plus précise et détaillée de la raison du maintien de package-lock.json peut être trouvée ici
la source