有了package.json文件package-lock.json还有用吗

3 篇文章 0 订阅
2 篇文章 0 订阅

首先,这个配置文件是我刚接触编程时最不愿碰的地方,觉得自己刚开始接触编程领域,还不到时候。但很快发现,在开发中都不可避免的要和配置文件打交道。于是便有了下文。在这也鼓励大家遇到配置文件千万不要敬而远之,真的没有你想象的那么可怕。

先回答标题的提问“有了package.json文件package-lock.json还有用吗?”。 答案是肯定的,而且是必须的。说到这,就不得不说说 package.json 配置:

package-lock.json 是为了弥补 package.json 配置的不足。

以下是 package.json 的配置内容:
angular框架package.json配置文件
从图中可以看得出,这里配置了各个依赖包以及它的版本号,但需要注意的:每个版本号都有一个前缀:“^” / “~” ,那这两种不同的前缀分别有什么含义呢?

要了解其含义必须掌握的知识点:
知识点一:版本结构 : 主版本.次版本.补丁版本

首先,可以明确的一点是,这两种前缀肯定是对当前版本的一个修饰(版本限制)。

“^”:是对 “主版本” 的限制,表示只要主版本保持一致即可,eg:^1.2.0 表示 1.2.0(包括本身) 到 2.0.0(不包括本身)之前的所有版本都行。
“~”:是对 “次版本” 的限制,表示只要次版本保持一致即可,eg:~1.2.0 表示 1.2.0(包括本身) 到 1.3.0(不包括本身)之前的所有版本都行。

注:没有任何前缀的修饰表示 “精确版本”

有了以上的基础,就可以看的出,在 package.json 中存在大量的不精确版本的依赖,这也导致了不同版本之间的差异导致开发中可能会出现意想不到的问题。

问题一:为什么会有这么多不确定的依赖呢?
:在我们初次创建项目时,我们可能并不需要太关注某个依赖包的版本。只要满足大版本一致即可开发。所以 package.json 中就为依赖包添加了 “^” 的版本限制。

问题二:有了版本限制不就好了吗,为什么还 package-lock.json ?
:为了更加的精确匹配初次安装的依赖包,防止意料之外的错误。

  • 执行 npm i 时,相当于发送一个请求,我们在请求前依据 package.json 的版本限制,发送的参数就是只要大版本一致随便给我一个包就行,此时是不确定的一个版本(这个是随官方版本更新自动获取当前版本最新的包)!在npm响应我们的请求后,这个依赖包的版本就确定了,是一个精确版本的依赖包。
  • 之后我们就建立在这个依赖包的基础上开发。如果没有保存依赖的精确版本,那我们在团队合作开发时,可能团队中每个开发者安装的版本都不一样,虽说小版本问题不大,但多多少少都会有差异吧。特别是存在大量的依赖包时,这种差异会无限放大,因此,我们必须保证团队所有开发者安装的版本都是一致的。这样一来,就需要有一个专门的文件来记录依赖的精确版本信息。

package-lock.json 从哪来的,有什么用?

package-lock.json文件是在我们执行 npm i 时自动生成的,是用于记录我们开发时实际安装的包的来源和精确版本以及其依赖(依赖包的依赖)。

作用:锁定项目依赖包的精确版本
package-lock.json 配置
package-lock.json 文件的属性解释:

属性名描述
name包锁(package-lock)的名称,用于匹配对应的 package.json
version包锁的版本,用于匹配对应的 package.json
lockfileVersion整数版本,从1开始,包含此文档的版本号,生成此package-lock.json时使用的语义
requires这是一个模块名称到版本的映射。这是这个模块所需的所有内容的列表,不管它将安装在哪里,版本应该通过普通匹配规则进行匹配。
dependencies依赖,指定该项目所依赖的包(这里列出了所有项目依赖包以及依赖包自己的依赖)

小结

package-lock.json 配置文件对版本控制的作用还是非常重要的,特别是在团队合作过程中,千万别觉得没用或为了冲突处理方便就随意移除这个文件。

  • 上面小结提到一个出现冲突的问题,这里再多说以一下。
    一般情况下,这个配置文件是不会出现冲突的,如果有冲突的出现,就说明,两个人在提交代码前安装了 之前不存在 的相同包相同版本,或者安装了相同包不同的版本。

情况一(相同包相同版本):如果之前package-lock.json 文件里不存在这个包(即添加新的依赖包),则会自动创建一个,此时两个人各自在本地创建,然后提交。此时一定会出现冲突。
解决办法: 选择性的保留任意一个即可(这里建议,最好的实现是仅有一个人添加新的包即可,团队其他开发者拉取最新的代码后直接执行 npm i 即可)。

情况二(相同包不同版本):一个开发者自己升级依赖到指定的版本,另一位开发者,不知情的情况下又做了新的升级,两次升级的版本并不一致。此时提交一定会出现冲突。
解决办法: 开发者自行沟通,明确好要更新的版本,重新安装,再次提交。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你只有package-lock.json文件而没有package.json文件时,这通常意味着你的项目是从其他地方复制过来的,或者你的项目丢失了package.json文件package.json是一个用来管理和描述项目依赖关系的文件,它包含了项目所需的各种包和模块的信息。 如果你丢失了package.json文件,你可以尝试以下几种方法来恢复它: 1. 查找备份:如果你曾经创建过项目的备份,可以尝试在备份中找到package.json文件并复制回项目目录。 2. 使用npm init命令重新生成:打开终端或命令提示符,进入到项目目录,并运行以下命令来重新生成package.json文件: ``` npm init ``` 按照提示回答一些问题,然后npm将会生成一个新的package.json文件。 3. 手动创建package.json文件:如果你知道项目所需的依赖关系,你可以手动创建一个package.json文件。在项目根目录下创建一个空的文本文件,并将其命名为package.json。然后在文件中添加以下基本结构,并根据项目需要添加各种依赖项: ``` { "name": "your-project-name", "version": "1.0.0", "dependencies": { // 添加你的依赖项 }, "devDependencies": { // 添加你的开发依赖项 } } ``` 注意:手动创建package.json文件时,确保文件格式正确,特别是JSON语法方面。 无论你选择哪种方法,恢复了package.json文件后,可以使用npm或yarn等工具来安装项目所需的依赖项。运行以下命令来安装依赖项: ``` npm install ``` 希望这些方法能够帮助你恢复丢失的package.json文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值