HarmonyOS鸿蒙Next中如何在oh-package中同时用远端和本地同名的模块?

HarmonyOS鸿蒙Next中如何在oh-package中同时用远端和本地同名的模块? cke_7536.png

如图,我现在在一个工程中有两个模块,一个entry,用来调用测试,还有一个handshake模块,是shared类型的库。

handshake模块已经上传至本地ohpm-repo库,版本是1.0.4.

cke_6996.png

现在我想同时调用1.0.4三方库版本以及本地最新的开发版的库,这里该如何处理这两个同名的模块?

不能用项目/工程级的overrides,因为我两个都要用。

最好不要改本地模块包名,因为到时候上传还要改回去,很麻烦。

有什么好的解决方法吗?比如改名之类的机制?


更多关于HarmonyOS鸿蒙Next中如何在oh-package中同时用远端和本地同名的模块?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

尊敬的开发者,您好!当前不支持一个模块中依赖有两个来源的模块。建议您将远端依赖所需的功能同步至本地,直接使用本地依赖完成验证,方便您后续更新版本。

如果您接受更改本地包名的形式,可以参考如下:

1、修改本地包名,将本地包中的module.json和oh-package.json中的name变更为新名字。

2、所需依赖的模块添加新名字的依赖。

3、使用本地模块的功能时,通过新名字引用。

如果上述方案不足以解决您的问题,您可以通过一下方式简述您的诉求:

请问您是在什么样的业务场景中使用该能力,交互流程是怎样的,在哪一个环节遇到了问题?方便提供一下其他开发平台的实现方案或者接口(优先官方文档的内容)吗?请您注意提供的内容不要包含您或第三方的非公开信息,如给您带来不便,敬请谅解。

更多关于HarmonyOS鸿蒙Next中如何在oh-package中同时用远端和本地同名的模块?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


那我在开发模块,想对当前模块和新修改的模块进行比较,目前只能采取复制粘贴的方式吗?

可以通过右键文件夹或者文件,点击“Compare With…”,然后在弹窗中选中另一要对比的文件,相关对比信息会展示在主窗中。

项目中这个握手模块真实的包名是@nsp/nsp_mcs_handshake

我要同时用远端的@nsp/nsp_mcs_handshake和本地的@nsp/nsp_mcs_handshake,本地的版本会高一点

cke_119.png

cke_325.png

这个是调用情况

在HarmonyOS Next的oh-package中,可通过package.json的dependencies配置同时使用远端和本地同名模块。使用别名映射方式区分,例如:"dependencies": { "moduleA": "npm:moduleA@1.0.0", "moduleA-local": "file:./local/moduleA" }。代码中通过别名引用对应模块,import { feature } from 'moduleA-local'。需确保模块结构符合OHPM规范,避免循环依赖。

在HarmonyOS Next的oh-package中,可以通过别名机制(alias)解决同名模块的依赖冲突问题。具体操作如下:

  1. 在工程的 oh-package.json5 中,使用 ohpm alias 命令为本地模块添加别名:
ohpm alias @handshake @handshake-local
  1. 在依赖配置中分别引用:
{
  "dependencies": {
    "@handshake": "1.0.4",        // 远端版本
    "@handshake-local": "file:../handshake"  // 本地开发版本
  }
}
  1. 在代码中通过不同标识符调用:
import { handshake } from '@handshake';        // 引用1.0.4版本
import { handshake } from '@handshake-local';  // 引用本地开发版本

这种方法既保持了原有包名结构,又实现了同时使用两个版本的需求。本地开发完成后,直接移除别名配置即可发布,无需修改包名。

回到顶部