NodeJS NPM安装在不同的情况下表现不同,无法理解它是否正确?

8zzbczxx  于 2023-04-29  发布在  Node.js
关注(0)|答案(1)|浏览(118)
  • npm init初始化项目
  • 我在包中使用axios: "~1.2.4"。json文件
  • 当我运行npm install包时,将安装1.2.6,这是正确的,因为将安装最新的修补程序
  • 现在如果我在包中使用^1.2.4。json并运行npm installnode modulespackage-lock.json将不会更新为1.3.6,这是基于^使用的预期行为(***为什么会发生这种情况?***)
  • 现在如果我在包中使用^1.3.4。json并运行npm installnode modulespackage-lock.json都将更新为使用1.3.6,这是预期的行为***(我认为这是正确的)***
  • 现在,如果我使用1.2.41.3.4,将安装带有该版本的软件包

另外,* 的实际用途是什么。 Package 锁json***文件?
更新:https://medium.com/helpshift-engineering/package-lock-json-the-complete-guide-2ae40175ebdd#:~:text= different%20machines%2F environments。- ,package%2Dlock.,json%20file.这篇文章有助于回答我的问题,你也可以阅读雷的答案,这也是有帮助的。

rxztt3cl

rxztt3cl1#

如果我使用^1。2.4在包中。json并运行npm安装节点模块或package-lock。json不会更新为1。3.6这是基于^的用法的预期行为(为什么这里会发生这种情况?)
它不会更新,因为包锁文件引用了您已经安装的特定版本。这就是package-lock文件的用途:可重复安装。如果你(或其他人)在另一台机器上安装了它,你会得到所有依赖项的相同版本。
如果您在运行npm install之前删除了package-lock文件,您将获得与您的包匹配的最新版本。json规范(和package-lock将被重新创建)。
如果我使用^1。3.4在包中。json并运行npm安装node模块和package-lock。json都将更新为使用1。3.6预期的行为(我认为这是正确的)
这是因为1。您已经拥有的2.x版本(您的package-lock中的版本)不符合^1.3.4要求,因此npm安装了一个符合要求的版本并相应地更新了package-lock。

相关问题