Le point de package-lock.json
est de représenter fidèlement l'arbre tel qu'il existe réellement à un moment donné, de sorte que quelqu'un clonant le projet obtienne exactement le même arbre que toi.
Si vous voulez mettre à niveau cette dépendance vers une version plus récente, il suffit d'utiliser npm update
et ensuite valider la mise à jour package-lock.json
. Les autres membres de votre équipe recevront cette mise à jour dans le cadre du processus normal d'acquisition de la dernière version.
Plus dans le Page de npmjs.com sur les verrous de paquets .
Considérons un scénario dans lequel vous et moi sommes dans une équipe et notre projet utilise nifty-lib
con package.json
en disant "nifty-lib": "^0.4.0"
et nous ne partageons pas package-lock.json
. Peut-être que je travaille sur le projet depuis deux mois de plus que vous et que j'ai nifty-lib
v0.4.0 quand je l'ai installé. Mais lorsque vous l'avez récupéré et installé, vous avez obtenu la v0.4.1 (une mise à jour de correction de bogues qui, malheureusement, a introduit un nouveau bogue). À un moment donné, vous remarquez ce qui semble être un bogue dans notre projet, mais je ne peux pas le reproduire. Nous tournons en rond pendant un moment en essayant de comprendre pourquoi cela arrive à vous et pas à moi. Finalement, nous nous rendons compte que c'est parce qu'il s'agit en fait d'un bug de nifty-lib
qu'ils ont introduit dans la v0.4.1. Avec un peu de chance, nous obtiendrons alors la 0.4.2 ou quelque chose comme ça (ou s'il n'y en a pas, nous corrigeons le bogue et faisons un PR, tout en revenant à la 0.4.0 pour l'ensemble du projet).
Si nous avions partagé package-lock.json
nous n'aurions pas tourné sur place en nous demandant pourquoi le problème est arrivé à vous et pas à moi, parce que vous auriez eu la même version de nifty-lib
comme moi. Dans le cadre de notre cycle normal, nous ferions npm update
périodiquement, et si un nouveau bogue apparaissait dans nos tests, nous saurions, grâce à l'historique des livraisons, que c'était à cause d'un bogue dans une dépendance.
Maintenant, pour "moi" et "vous", lisez "dev" et "production". :-)
C'est pourquoi package-lock.json
verrouille la version, mais package.json
vous permet de dire "ceci ou mieux". package-lock.json
permet de garder votre équipe unifiée sur les versions, mais vous pouvez intentionnellement mettre à jour avec npm update
qui apparaît dans l'historique des livraisons, ce qui vous permet de suivre les régressions.