@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.1190.72.120-rc.0
核心目标 包名唯一、版本连续递增、多 RN 版本通过 dist-tag 隔离;dist-tag 命名对齐上游 react-native0.XX-stable 等),兼容既有发包格式

目录


一、规范总则

  1. 包名唯一固定:全程使用 @react-native-oh/react-native-harmony@react-native-oh/react-native-harmony-cli不添加任何版本后缀
  2. 版本号严格对齐上游:前两位固定为 RN 上游版本(如 0.720.77),第三位为鸿蒙化迭代序号,只增不减
  3. 多版本隔离:通过 npm dist-tag 区分不同 RN 版本线,保障并行迭代。
  4. 发包连续性:版本号永不回退;已发布包永久留存;各版本线标签自动指向该线最新包。
  5. 统一规范:全社区强制遵循本规范发包,禁止自定义格式。

二、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.720.72-stable 等任何版本或 dist-tag 式标识(标签仅用于安装维度,不得写入 name 字段)。
  • 禁止修改包名、禁止自定义包名。
  • 上述两个包名全程唯一使用。

四、版本号管理规范(核心)

1. 版本号格式(严格遵循既有格式)

稳定版

[RN主版本].[RN次版本].[鸿蒙化迭代序号]

预发布版

[RN主版本].[RN次版本].[鸿蒙化迭代序号]-[预发布后缀]

2. 版本号分段定义

字段 规则 示例
RN 主版本 与 React Native 主版本一致 0
RN 次版本 与 RN 版本线次版本一致(72 / 77 / 82 / 84) 72
鸿蒙化迭代序号 RNOH 专属迭代号,连续递增、永不回退 119120121
预发布后缀 仅支持 rc(候选正式版),对齐上游惯例 rc.0rc.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. 版本迭代铁律

  1. 前两位版本号(如 0.720.77永久固定,与 RN 版本线绑定。
  2. 迭代序号只增不减,禁止重复、回退、重置。
  3. 预发布版仅用于测试;正式发布时,迭代号须大于上一稳定版对应逻辑(正式版迭代号须合理递增)。

五、npm 分发标签(dist-tag)规范(多版本核心)

包名唯一、无后缀,需通过 dist-tag 实现多 RN 版本隔离与发包连续性;用户可通过标签安装对应版本线的最新包。

命名对齐上游:稳定线标签采用与官方包 react-native 相同的 [RN 次版本线]-stable 形式(如 0.72-stable),见 npm 上 react-native 的 dist-tags。因 RNOH 多线并行发布,预发布采用 [RN 次版本线]-rc(如 0.72-rc);上游另有全仓库维度的 nextnightly 等,本组织是否增设由社区另行约定,不与各线的 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. 标签绑定规则

  1. 稳定版发布后,须绑定对应版本线标签(如 0.72.119 → 更新 0.72-stable)。
  2. 预发布版绑定 0.XX-rc,不影响对应 0.XX-stable 的语义。
  3. 每次发布可覆盖同线标签,使其始终指向该线最新包。
  4. 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/"
  }
}

七、标准化发包流程(保障连续性)

  1. 分支隔离
    不同 RN 版本线使用独立 Git 分支(如 0.720.770.820.84),禁止跨分支混发。

  2. 版本号校验
    确认迭代序号大于当前该线已发布最新版;保持 x.y.z 格式,不得修改前两位。

  3. 构建与测试
    构建通过且在鸿蒙侧验证通过后,再执行发布。

  4. 发布命令

    # 稳定版:绑定对应版本线标签(示例为 0.72 线,与上游 0.72-stable 命名一致)
    npm publish --tag 0.72-stable
    
    # 预发布版:绑定该线 rc 标签
    npm publish --tag 0.72-rc
    
  5. 标签维护
    发布后确保对应 0.XX-stable / 0.XX-rc(及社区约定的 latest 策略)与本次发布一致。

  6. 文档同步
    更新 CHANGELOG.md,记录 RN 版本、迭代序号及鸿蒙化变更要点。

  7. 历史留存
    已发布版本不得删除、不得篡改,保障历史项目依赖可复现。


八、版本迭代示例(连续性演示)

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  # 某一时刻的最新稳定版(示例)

九、禁止项(强制红线)

  1. 禁止修改固定包名,禁止添加任何版本后缀。
  2. 禁止修改组织名 @react-native-oh
  3. 禁止修改版本号前两位(RN 版本标识)。
  4. 禁止版本号回退、重复发包、删除已发布版本。
  5. 禁止将包绑定到错误的 RN 版本线标签(如 0.72 线包不得指向 0.77-stable)。
  6. 禁止自定义版本号格式,必须严格遵循本文 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 等现有版本号,无需改造依赖写法。