• npm init以初始化项目
  • I am using axios: "~1.2.4" in the package.json file
    • 当我运行npm install时,将安装1.2.6包,这是正确的,因为将安装最新的补丁
    • 现在,如果我在Package.json中使用^1.2.4并运行npm install,node modulespackage-lock.json将不会更新为1.3.6,这是基于^(106)的使用情况的预期行为
    • 现在,如果我在Package.json中使用^1.3.4并运行npm install,node modulespackage-lock.json都将更新为使用1.3.6,这是预期的行为105
    • 现在,如果我使用1.2.41.3.4,将安装带有该版本的包

另外,100文件的实际用途是什么?

最新数据:https://medium.com/helpshift-engineering/package-lock-json-the-complete-guide-2ae40175ebdd#:~:text=different%20machines%2Fenvironments.-,package%2Dlock.,json%20file.这篇文章有助于回答我的问题,你也可以阅读ray的回答,这也是有帮助的.

推荐答案

现在,如果我在Package.json中使用^1.2.4并运行NPM安装 node 模块,或者包-lock.json不会更新到1.3.6,这是基于^的用法的预期行为(为什么这里会发生这种情况?)

它不会更新,因为程序包锁文件引用了您已经安装的特定版本.这就是程序包锁文件的目的:可重复安装.如果您(或其他任何人)将其安装在另一台计算机上,您将获得所有依赖项的相同版本.

如果在运行npm install之前删除了Package-lock文件,您将获得与您的Package.json规范匹配的最新版本(并且将重新创建Package-lock).

现在,如果我在Package.json中使用^1.3.4并运行NPM安装 node 模块和包-lock.json,它们都将更新为使用1.3.6,这是预期的行为(我认为这是正确的)

这之所以有效,是因为您已有的1.2.x版本(您的包中的版本-lock)不满足^1.3.4的要求,所以NPM安装了一个版本,并相应地更新了包-lock.

Javascript相关问答推荐

如何使用3个部件之间的路由?

v-textfield的规则找不到数据中声明的元素

使用NgDeliverentOutlet和动态内容投影的Angular 渲染组件

为什么我的第二个OnClick Isloading值在TEK查询Mutations 查询中不起作用?

使用CDO时如何将Vue组件存储在html之外?

Phaser框架-将子对象附加到Actor

微软Edge编辑和重新发送未显示""

如何让npx在windows中运行js脚本?

如何在 cypress 中使用静态嵌套循环

加载背景图像时同步旋转不显示的问题

如何在文本字段中输入变量?

更新动态数据中对象或数组中的所有值字符串

如何将数据块添加到d3力有向图中?

Webpack在导入前混淆文件名

如何在我的Next.js项目中.blob()我的图像文件?

面对代码中的错误作为前端与后端的集成

在不删除代码的情况下禁用Java弹出功能WordPress

如何使用基于promise (非事件emits 器)的方法来传输数据?

为什么延迟在我的laravel项目中不起作用?

Socket.IO在刷新页面时执行函数两次