package.json 与 package-lock.json 区别

5 篇文章 0 订阅

package.json 与 package-lock.json 区别

  • 在npm5.0后,npm install 后都会生成一个package-lock.json文件

  • package.json缺点: package.json文件只能锁定大版本号,也就是版本号(比如2.05)的第一位(这里的第一位就是2,后面的版本号不会被锁定),当每次npm install都会拉取大版本下的最新的小版本号,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这样导致多出工作量,测试等适配,而package-lock.json文件会每安装一个依赖的时候都会锁定在你安装的版本

  1. 锁定安装时的包的版本号和包地址,需要上传到git,保证大家的依赖包一致。
  2. 会记录当前状态下实际安装的各个npm, package的具体来源和版本号
  3. npm是一个用于管理package直接依赖关系的管理器,它允许开发者在package中标出自己项目对npm各个库包的依赖
 "dependencies": {
   "@types/node": "^8.0.33",
 }

在package.json文件中会锁定大版本号,这里也就是8版本,当npm install时,有可能会下载8.1.2版本的。因为由于npm是一个开源项目,有的库包开发者并没有遵循要求,有可能能一个大版本升级还是用的之前的版本号(版本号第一位没有变),这时npm install 就会把这次更新下载下来,从而有可能会出现问题,造成兼容等问题

  1. 安装依赖
    以前: 直接修改package,然后npm install 即可
    现在: 因为npm5版本之后会锁在package.lock中,现在如果去改一个版本号需要 npm install xx@x.x.x的方法去更新依赖,然后package.lock也会随之更新

  2. package.lock.json文件会锁定所有模块的版本号,包括主模块和所有子模块的依赖。当执行npm install时,node会从package.json文件中读取模块名称,从
    package.lock.json文件中获取版本号,然后再进行下载和更新。因此当执行npm install时node不会自动更新package.json文件中的模块

注意:

  1. 当package.json和package.lock.json文件都不存在时,执行npm install后,node会自动生成package.lock.json文件,会把node_modules中模块信息
    全部记录到package.lock.json文件中,但不会生成package.json文件,可以执行npm install -y去生成。
  2. 假如已经安装了express 2.1.4这个版本,从git更新了package.json和package-lock.json,我npm install能覆盖掉node_modules里面的依赖吗?
    npm install是可以直接覆盖掉原先的版本的,所以在协作开发时,这两个文件如果有更新,你的开发环境应该npm install一下才对。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值