Vue学习系列 -- package-lock.json的作用

转载自:https://www.cnblogs.com/cangqinglang/p/8336754.html

其实用一句话来概括很简单,就是锁定安装时的包的版本号,并且需要上传到git,以保证其他人在npm install时大家的依赖能保证一致。

引用知乎@周载南的回答

根据官方文档,这个package-lock.json 是在 `npm install`时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号。

它有什么用呢?因为npm是一个用于管理package之间依赖关系的管理器,它允许开发者在pacakge.json中间标出自己项目对npm各库包的依赖。你可以选择以如下方式来标明自己所需要库包的版本

这里举个例子:

"dependencies": {
 "@types/node": "^8.0.33",
},

这里面的 向上标号^是定义了向后(新)兼容依赖,指如果 types/node的版本是超过8.0.33,并在大版本号(8)上相同,就允许下载最新版本的 types/node库包,例如实际上可能运行npm install时候下载的具体版本是8.0.35。波浪号

大多数情况这种向新兼容依赖下载最新库包的时候都没有问题,可是因为npm是开源世界,各库包的版本语义可能并不相同,有的库包开发者并不遵守严格这一原则:相同大版本号的同一个库包,其接口符合兼容要求。这时候用户就很头疼了:在完全相同的一个nodejs的代码库,在不同时间或者不同npm下载源之下,下到的各依赖库包版本可能有所不同,因此其依赖库包行为特征也不同有时候甚至完全不兼容。

因此npm最新的版本就开始提供自动生成package-lock.json功能,为的是让开发者知道只要你保存了源文件,到一个新的机器上、或者新的下载源,只要按照这个package-lock.json所标示的具体版本下载依赖库包,就能确保所有库包与你上次安装的完全一样。

原来package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次npm install都是拉取的该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试/适配等,所以package-lock.json文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。

那如果我们安装时的包有bug,后面需要更新怎么办?

在以前可能就是直接改package.json里面的版本,然后再npm install了,但是5版本后就不支持这样做了,因为版本已经锁定在package-lock.json里了,所以我们只能npm install xxx@x.x.x  这样去更新我们的依赖,然后package-lock.json也能随之更新。

假如我已经安装了jquery 2.1.4这个版本,从git更新了package.json和package-lock.json,我npm install能覆盖掉node_modules里面的依赖吗?

其实我也有这个疑问,所以做了测试,在直接更新package.json和package-loc.json这两个文件后,npm install是可以直接覆盖掉原先的版本的,所以在协作开发时,这两个文件如果有更新,你的开发环境应该npm install一下才对。

  • 3
    点赞
  • 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、付费专栏及课程。

余额充值