【HarmonyOS】鸿蒙应用安装三方包后,为什么每次同步更新都会将三方包更新成最新版本?

【关键字】

鸿蒙应用三方包安装,ohpm三方包安装

【问题详情】

进行鸿蒙应用开发时,我们经常会通过ohpm命令安装三方包实现某些功能,但是可能会存在这种情况:当三方包发布新版本后,点击同步工程,会出现默认更新安装的三方包版本情况;但是因为功能版本兼容问题,我们往往不想升级版本,本篇文章介绍为什么会出现此类问题并如何规避解决。此处以API9 Stage模型HarmonyOS应用,@ohos/zxing三方包为例进行说明。

【问题复现】

第一步:在API9 Stage模型的工程中,在Terminal中通过如下命令安装2.0.0版本的@ohos/zxing三方包,执行成功后

1)工程oh-package.json5文件中默认添加依赖,并在oh_modules中生成对应三方包目录,查看版本为2.0.0;

ohpm i @ohos/zxing@2.0.0

cke_12571.png

2)在工程级oh-package-lock.json5中可以看到安装了2.0.0版本@ohos/zxing:

cke_13917.png

第二步:由于oh-package-lock.json5文件与oh_modules目录都是自动生成的,通常我们不会将其提交到代码仓中保存,而是通过oh-package.json5文件生成,因此若我们更新项目(此时可能没有oh-package-lock.json5文件与oh_modules目录)或者手动删除oh-package-lock.json5文件后,重新点击【File-Sync and Refresh Project】同步工程,会发现@ohos/zxing三方包依赖版本变高了,重新生成的oh-package-lock.json5和oh_modules中版本如下所示:

cke_2787.png

cke_15314.png

cke_16739.png

但是我们并不想更新三方依赖版本,因为新版本可能存在功能适配问题,这无形中可能会导致功能无法使用,如何规避这个问题,导致问题原因是什么?

【问题分析解决】 

问题发生原因:使用ohpm命令安装指定版本或当时最新版本时,oh-package.json5文件中生成依赖会默认带^符号,此符号表示“次版本和补丁版本可增”,保持主版本(即版本号第一位数字2)不变情况下,次版本号(即版本号第二位数字0)和补丁版本号(即版本号第三位数字0)可以大于等于0,因此若三方包发布了新版本且版本号满足上述条件,oh-package-lock.json并未锁定版本情况下,同步工程中依赖会默认更新三方包版本。

cke_5732.png

问题规避:

由于目前DevEco Studio开发鸿蒙应用,使用ohpm install命令安装三方包会自动添加符号^,因此可以采取如下方式规避:

方式1:每次安装三方包之后,将oh-package.json5中^符号手动去除,这样保证安装固定版本的三方包;

方式2:不通过ohpm install命令安装三方包,直接在oh-package.json5文件中通过代码添加依赖,同样固定版本号,然后再点击右上角【Sync Now】同步工程依赖。

这样依赖包将固定具体版本且不会更新。

cke_7763.png

【说明】

只有oh-package-lock.json5中并未锁定三方依赖版本时,重新同步刷新工程才会更新依赖版本,即oh-package-lock.json5不存在时会根据oh-package.json配置的依赖重新更新下载三方包,若本地已通过oh-package-lock.json5文件锁定某个具体版本,同步更新工程则不会更新。

【参考文档】

依赖包版本符号介绍(npm与ohpm相同):npm语义版本(npm依赖包版本的~、>、^符号各代表什么?)_mob604757069565的技术博客_51CTO博客

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值