@rnoh npm 发包规范
| 项目 | 说明 |
|---|---|
| 适用范围 | React Native 0.72 / 0.77 / 0.82 / 0.84 等鸿蒙化并行迭代 |
| 官方组织 | @react-native-oh |
| 固定包名 | react-native-harmony(核心)、react-native-harmony-cli(工具) |
| 版本规则 | 无包名后缀;版本格式为 RN主版本.RN次版本.鸿蒙化迭代号(如 0.72.119、0.72.120-rc.0) |
| 核心目标 | 包名唯一、版本连续递增、多 RN 版本通过 dist-tag 隔离;dist-tag 命名对齐上游 react-native(0.XX-stable 等),兼容既有发包格式 |
目录
- 一、规范总则
- 二、npm 组织规范
- 三、包名规范
- 四、版本号管理规范
- 五、npm 分发标签 dist-tag
- 六、package.json 标准字段
- 七、标准化发包流程
- 八、版本迭代示例
- 九、禁止项
- 十、总结
一、规范总则
- 包名唯一固定:全程使用
@react-native-oh/react-native-harmony、@react-native-oh/react-native-harmony-cli,不添加任何版本后缀。 - 版本号严格对齐上游:前两位固定为 RN 上游版本(如
0.72、0.77),第三位为鸿蒙化迭代序号,只增不减。 - 多版本隔离:通过
npm dist-tag区分不同 RN 版本线,保障并行迭代。 - 发包连续性:版本号永不回退;已发布包永久留存;各版本线标签自动指向该线最新包。
- 统一规范:全社区强制遵循本规范发包,禁止自定义格式。
二、npm 组织规范
1. 唯一官方组织
固定值:@react-native-oh。所有发包必须归属该组织,禁止无 Scope 发包。
2. 包完整标识格式
@react-native-oh/[固定包名]
三、包名规范(固定无后缀)
1. 核心包(唯一固定)
| 包类型 | 完整包名 | 说明 |
|---|---|---|
| 鸿蒙化核心适配包 | @react-native-oh/react-native-harmony |
主运行时包,无任何后缀 |
| 命令行工具包 | @react-native-oh/react-native-harmony-cli |
开发工具包,无任何后缀 |
2. 强制规则
- 禁止在包名中添加
0.72、0.72-stable等任何版本或 dist-tag 式标识(标签仅用于安装维度,不得写入name字段)。 - 禁止修改包名、禁止自定义包名。
- 上述两个包名全程唯一使用。
四、版本号管理规范(核心)
1. 版本号格式(严格遵循既有格式)
稳定版
[RN主版本].[RN次版本].[鸿蒙化迭代序号]
预发布版
[RN主版本].[RN次版本].[鸿蒙化迭代序号]-[预发布后缀]
2. 版本号分段定义
| 字段 | 规则 | 示例 |
|---|---|---|
| RN 主版本 | 与 React Native 主版本一致 | 0 |
| RN 次版本 | 与 RN 版本线次版本一致(72 / 77 / 82 / 84) | 72 |
| 鸿蒙化迭代序号 | RNOH 专属迭代号,连续递增、永不回退 | 119 → 120 → 121 |
| 预发布后缀 | 仅支持 rc(候选正式版),对齐上游惯例 |
rc.0、rc.1 |
说明:完整版本号形如
0.72.119,即「主版本.次版本.迭代号」三段;前两位与对应 RN 版本线绑定,第三位为鸿蒙侧迭代。
3. 版本号示例
| RN 版本线 | 稳定版示例 | 预发布版示例 | 说明 |
|---|---|---|---|
| 0.72 | 0.72.119 |
0.72.120-rc.0 |
0.72 线第 119 次稳定迭代 |
| 0.77 | 0.77.56 |
0.77.57-rc.0 |
0.77 线第 56 次稳定迭代 |
| 0.82 | 0.82.34 |
0.82.35-rc.0 |
0.82 线第 34 次稳定迭代 |
| 0.84 | 0.84.10 |
0.84.11-rc.0 |
0.84 线第 10 次稳定迭代 |
4. 版本迭代铁律
- 前两位版本号(如
0.72、0.77)永久固定,与 RN 版本线绑定。 - 迭代序号只增不减,禁止重复、回退、重置。
- 预发布版仅用于测试;正式发布时,迭代号须大于上一稳定版对应逻辑(正式版迭代号须合理递增)。
五、npm 分发标签(dist-tag)规范(多版本核心)
因包名唯一、无后缀,需通过 dist-tag 实现多 RN 版本隔离与发包连续性;用户可通过标签安装对应版本线的最新包。
命名对齐上游:稳定线标签采用与官方包 react-native 相同的 [RN 次版本线]-stable 形式(如 0.72-stable),见 npm 上 react-native 的 dist-tags。因 RNOH 多线并行发布,预发布采用 [RN 次版本线]-rc(如 0.72-rc);上游另有全仓库维度的 next、nightly 等,本组织是否增设由社区另行约定,不与各线的 0.XX-rc 混用语义。
1. 标签定义(稳定线)
| 标签名称 | 适用版本线 | 作用 | 说明 |
|---|---|---|---|
latest |
社区主推线 | npm install 默认解析的标签 |
由社区统一管理,指向主推稳定版 |
0.72-stable |
RN 0.72 | 指向 0.72 线当前最新稳定版 | 与上游 react-native@0.72-stable 命名一致 |
0.77-stable |
RN 0.77 | 指向 0.77 线最新稳定版 | 同上 |
0.82-stable |
RN 0.82 | 指向 0.82 线最新稳定版 | 同上 |
0.84-stable |
RN 0.84 | 指向 0.84 线最新稳定版 | 同上 |
2. 预发布标签(按版本线)
0.72-rc、0.77-rc、0.82-rc、0.84-rc
3. 标签绑定规则
- 稳定版发布后,须绑定对应版本线标签(如
0.72.119→ 更新0.72-stable)。 - 预发布版绑定
0.XX-rc,不影响对应0.XX-stable的语义。 - 每次发布可覆盖同线标签,使其始终指向该线最新包。
latest由社区统一维护,与主推 RN 版本线策略一致。
4. 安装示例(用户侧)
# 安装默认 latest(社区主推稳定版)
npm install @react-native-oh/react-native-harmony
# 安装 RN 0.72 版本线最新稳定版(与上游 react-native 标签风格一致)
npm install @react-native-oh/react-native-harmony@0.72-stable
# 安装 RN 0.84 线预发布测试版
npm install @react-native-oh/react-native-harmony@0.84-rc
# 安装指定精确版本
npm install @react-native-oh/react-native-harmony@0.72.119
六、package.json 标准字段规范
发包须包含下列关键字段,保证兼容性与可追溯性;version 以实际发布为准,下表仅为示例。
1. 核心包 react-native-harmony
{
"name": "@react-native-oh/react-native-harmony",
"version": "0.72.119",
"description": "React Native 鸿蒙化官方核心适配包",
"main": "index.js",
"keywords": [
"react-native",
"harmony",
"openharmony",
"react-native-oh"
],
"author": "RNOH Community",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://gitcode.com/OpenHarmony-RN/ohos_react_native.git"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
}
}
2. CLI 工具包 react-native-harmony-cli
{
"name": "@react-native-oh/react-native-harmony-cli",
"version": "0.72.101",
"description": "React Native 鸿蒙化 CLI 开发工具",
"keywords": [
"react-native",
"harmony",
"cli",
"react-native-oh"
],
"repository": {
"type": "git",
"url": "https://gitcode.com/OpenHarmony-RN/ohos_react_native.git"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
}
}
七、标准化发包流程(保障连续性)
-
分支隔离
不同 RN 版本线使用独立 Git 分支(如0.72、0.77、0.82、0.84),禁止跨分支混发。 -
版本号校验
确认迭代序号大于当前该线已发布最新版;保持x.y.z格式,不得修改前两位。 -
构建与测试
构建通过且在鸿蒙侧验证通过后,再执行发布。 -
发布命令
# 稳定版:绑定对应版本线标签(示例为 0.72 线,与上游 0.72-stable 命名一致) npm publish --tag 0.72-stable # 预发布版:绑定该线 rc 标签 npm publish --tag 0.72-rc -
标签维护
发布后确保对应0.XX-stable/0.XX-rc(及社区约定的latest策略)与本次发布一致。 -
文档同步
更新CHANGELOG.md,记录 RN 版本、迭代序号及鸿蒙化变更要点。 -
历史留存
已发布版本不得删除、不得篡改,保障历史项目依赖可复现。
八、版本迭代示例(连续性演示)
RN 0.72 版本线迭代记录
0.72.100 # 初始基准版
0.72.101 # Bug 修复
0.72.102-rc.0 # 新特性预发布
0.72.102 # 正式版发布
0.72.119 # 某一时刻的最新稳定版(示例)
0.72.120-rc.0 # 下一预发布版(示例)
RN 0.84 版本线迭代记录
0.84.1 # 初始版
0.84.2 # 功能迭代
0.84.10 # 某一时刻的最新稳定版(示例)
九、禁止项(强制红线)
- 禁止修改固定包名,禁止添加任何版本后缀。
- 禁止修改组织名
@react-native-oh。 - 禁止修改版本号前两位(RN 版本标识)。
- 禁止版本号回退、重复发包、删除已发布版本。
- 禁止将包绑定到错误的 RN 版本线标签(如 0.72 线包不得指向
0.77-stable)。 - 禁止自定义版本号格式,必须严格遵循本文
x.y.z(及允许的-rc.n)规则。
十、总结
| 要点 | 内容 |
|---|---|
| 包名唯一 | 全程使用 @react-native-oh/react-native-harmony(及 CLI 包),无后缀。 |
| 版本连续 | x.y.z:前两位锁 RN 版本线,第三位为鸿蒙迭代号递增。 |
| 多版本隔离 | 依靠 0.72-stable / 0.77-stable 等(及对应 0.XX-rc)区分,命名对齐上游 react-native。 |
| 兼容既有格式 | 支持如 0.72.119 等现有版本号,无需改造依赖写法。 |