因为 RN
三方库 HarmonyOS
化需保证不影响其他平台上的使用,因此HarmonyOS
RN
三方库使用补丁化实现,项目中会存在两个独立的包如 react-native-svg
和 @react-native-oh-tpl/react-native-svg
,其中 @react-native-oh-tpl/react-native-svg
是 HarmonyOS
化的库,只能运行在 HarmonyOS
平台,两者结合实现了可运行在多平台的 react-native-svg
, 即在原库的基础上打上适配 HarmonyOS
平台的补丁,其他平台仍走原逻辑不受影响,HarmnyOS
侧则使用补丁内代码来实现。
需要在 package.json
添加如下配置:
{
"name": "@react-native-oh-tpl/react-native-svg",
+ "harmony": {
+ "alias": "react-native-svg"
+ },
...
}
RNOH 会在开发者使用 import xxx from 原库名
时,在平台为 HarmonyOS
时会重定向到配置了 harmony:alias 字段的三方库里。
比如:
import Svg from "react-native-svg";
等于:
import Svg from "@react-native-oh-tpl/react-native-svg";
这样开发者就可以不需要更改库名即可使用到我们的补丁内容。
对于三方库使用者来说,只需要根据使用文档进行相关配置即可,无其他使用影响,以 react-native-svg 为例:
- 安装
@react-native-oh-tpl/react-native-svg
; - 配置相关 Link 操作;
由于该库内部已配置了别名 react-native-svg
,因此项目中仍然可以正确识别该库,使用方式也不需要进行特殊修改。