首页 前端知识 npm install安装依赖package.json和package-lock.json版本不一致

npm install安装依赖package.json和package-lock.json版本不一致

2024-05-26 00:05:01 前端知识 前端哥 375 161 我要收藏

下列信息参考其他文章 原文地址

package.json文件

它是项目的配置文件,常见的配置有配置项目启动、打包命令,声明依赖包等。package.json文件是一个JSON对象,该对象的每一个成员就是当前项目的一项设置。
主版本号
当新版本无法兼容基于前一版本的代码时,则提高主版本号;
次版本号
当新版本新增了功能和特性,但仍兼容前一版本的代码时,则提高次版本号;
修订号
当新版本仅仅修正了漏洞或者增强了效率,仍然兼容前一版本代码,则提高修订号;
最优版本
默认情况下,npm install xxx --save下载的都是最新版本,并且会在package.json文件里登记一个最优版本号。
^ 兼容某个大版本
^意味着下载的包可能会是更高的次版本号或者修订版本号。(也就是主版本不能变,次版本、修订版本可以随意变)。
~ 兼容某个次版本
而~意味着有可能会有更高的修订版本号。(也就是主版本、次版本不能变,修订版本可以随意变)。

package-lock.json 详解

package.json里面的包版本不是一个具体的版本,而是一个最优版本。而package-lock.json里面定义的是某个包的具体版本,以及包之间的层叠关系。
一个 package-lock.json 里面的每个依赖主要是有以下的几部分组成的:
Version: 依赖包的版本号
Resolved: 依赖包的安装源(其实就是可以理解为下载地址)
Intergrity: 表明完整性的 Hash 值
Dev: 表示该模块是否为顶级模块的开发依赖或者是一个的传递依赖关系
requires: 依赖包所需要的所有依赖项,对应依赖包 package.json 里 dependencices 中的依赖项
dependencices: 依赖包 node_modeles 中依赖的包(特殊情况下才存在)。并不是所有的子依赖都有 dependencies 属性,只有子依赖的依赖和当前已安装在根目录的 node_modules 中的依赖冲突之后, 才会有这个属性。 这可能涉及嵌套情况的依赖管理。
假设我们的项目依赖A、B、C三个包,并且B包又依赖特定版本的C包,所以B包就会有dependencices,那么我们项目的整个node_modules的目录结构如下

node_modules
  A.package
  B.package
    node_modules
      C.package
  C.package

那什么情况下package.json和package-lock.json里面的版本号一致呢?
当package.json里面不再使用最优版本,而是一个特定有效版本,也就是版本号前不带修饰符,这样package.json和package-lock.json里面的版本号才是一致的。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/9557.html
标签
评论
发布的文章

html5怎么实现语音搜索

2024-06-01 10:06:32

HTML5

2024-02-27 11:02:15

HTML - 头部元素

2024-06-01 10:06:06

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!