npm init
初始化项目- 我在包中使用
axios: "~1.2.4"
。json文件 - 当我运行
npm install
包时,将安装1.2.6
,这是正确的,因为将安装最新的修补程序 - 现在如果我在包中使用
^1.2.4
。json并运行npm install
,node modules
或package-lock.json
将不会更新为1.3.6
,这是基于^
使用的预期行为(***为什么会发生这种情况?***) - 现在如果我在包中使用
^1.3.4
。json并运行npm install
,node modules
和package-lock.json
都将更新为使用1.3.6
,这是预期的行为***(我认为这是正确的)*** - 现在,如果我使用
1.2.4
或1.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.这篇文章有助于回答我的问题,你也可以阅读雷的答案,这也是有帮助的。
1条答案
按热度按时间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。