package.json和package-lock.json

一般来说,vue-cli项目的根路径都会有package.json和package-lock.json这两个文件,之前第一次学习的时候也并不知道这两个文件具体是做什么的,经过具体了解后才知道这两个文件的重要性。

我们都知道vue-cli中通过npm安装的依赖/组件都是放在node_modules下的,没有这些module我们的项目是肯定运行不起来的,但是上传到github上的时候缺不上传这个,一来是因为体积较大,而来文件过多,速度慢。但是如果不上传这个重要的node_modules,那别人把你的vue-cli项目拉下可以运行成功吗?他又怎么知道你的项目安装了哪些组件或是依赖?
这时候package-lock.json和package.json就派上用场了,其中package-lock.json是用来锁定安装时的包版本号,即你一开始创建这个vue-cli项目时所安装的所有模块及其版本号都会在里面记录,所以体积比较大,而package.json存储的是在你vue-cli项目初始化后你又自己手动安装的一些模块,一般内容较少。

官方文档:这个package-lock.json 是在 npm install时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号.
跟package.json的区别在于(举个栗子):

“dependencies”: {
“@types/node”:^8.0.33,
},

这里的^向上尖号是定义向后(新)兼容依赖,如果types/node版本是超过8.0.33,并且是在大版本(8)上相同,就允许下载最新的types/node包。同一个大版本不同版本号之间存在差异,导致依赖库包行为特征有时候不兼容。
所以npm最新的版本就开始自动生成package-lock.json功能,目的就是确保所有库包与你上次安装的完全一样。
package.json文件只能锁定大版本,即版本号的第一位,不能锁定后面的小版本,你每次npm install时候拉取的该大版本下面最新的版本,可能有些童鞋之前就踩过类似的坑。
一般为了稳定性考虑我们不能随意升级依赖包,因为如果换包导致兼容性bug出现很难排查,所以package-lock.json就是来解决包锁定不升级问题的。
如果要升级package-lock.json里面的库包,怎么操作呢?

npm install XXX@x.x.x
   总之两个合起来才是你这个项目所依赖的所有模块和其版本。大家可以联想maven项目中的pom文件,即
package-lock.json + package.json == pom
npm == maven
   所以这又对我们平时通过npm安装模块时有了一定的要求,如果你npm install的模块不想写入package.json,只想当前项目即局部安装,那么可以不加任何参数,即:
npm insall <package-name>
   如果不想写入package.json,且又要全局安装,则:
npm insall <package-name> -g
   如果需要将其安装的信息及录入package.json中,则安装入生成依赖为:
npm install <package-name> --save | -S   #--save和-S效果一样
   安装入开发依赖为(同样在package.json中):
npm install <package-name> --save-dev | -D   #--save-dev和-D效果一样
   当我们从代码托管平台拉取了别人的vue-cli项目之后,即可根据这两个文件通过:
npm install      #package.json中的所有内容都会安装,包括生成所需模块和开发所需模块
   如果只安装生产依赖,则:
npm install --production
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值