ROCK Docs
管理 ROCK 项目的 Docusaurus 版本化文档。
项目背景
- Docusaurus 3.9.x,部署于
https://alibaba.github.io/ROCK/ - 语言:英文(默认)+ 中文(zh-Hans)
includeCurrentVersion: false,所有发布内容来自versioned_docs/versions.json驱动版本注册,convertVersionsArrayToObject()自动生成配置- 侧边栏:顶层手动 + 内层
autogenerated - Release Notes 通过
reverseReleaseNoteSidebars()自动倒序排列
需要操作的 6 个位置
| # | 操作 | 路径 |
|---|---|---|
| 1 | 创建英文文档目录 | docs/versioned_docs/version-{NEW}/ |
| 2 | 创建版本侧边栏 | docs/versioned_sidebars/version-{NEW}-sidebars.json |
| 3 | 更新版本列表 | docs/versions.json |
| 4 | 更新最新版本指向 | docs/docusaurus.config.js 中的 lastVersion |
| 5 | 创建中文文档目录 | docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}/ |
| 6 | 创建中文侧边栏翻译 | docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}.json |
标准目录结构
version-X.Y.x/
├── Getting Started/
├── User Guides/
├── References/
│ ├── api.md
│ └── Python SDK References/
├── Release Notes/
│ ├── index.md
│ └── vX.Y.Z.md
└── overview.md
执行流程
Phase 0:版本冲突检测
- 读取
docs/versions.json获取已有版本列表 - 从用户输入的版本号推断文档版本号(如
1.4.5→1.4.x) - 如果文档版本已存在,跳转至「仅添加 Release Note」流程
仅添加 Release Note 流程
Step A:创建英文 Release Note
- 路径:
docs/versioned_docs/version-{EXISTING}/Release Notes/v{VERSION}.md - 使用下方英文模板
Step B:创建中文 Release Note
- 路径:
docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{EXISTING}/Release Notes/v{VERSION}.md - 使用下方中文模板
Step C:更新 Release Notes 索引
在英文和中文 Release Notes/index.md 的标题行下方第一行插入:
* [release v{VERSION}](v{VERSION}.md)
完成后跳转至 Phase 5 验证。
如果文档版本不存在,继续执行完整流程。
Phase 1:收集信息
新版本号:如
1.4.x基础版本:从哪个版本复制?默认取
versions.json第一项Release Note:是否创建?版本号是什么?
是否修改
lastVersion:必须明确告知用户影响后再确认:⚠️ 修改
lastVersion会改变文档站点默认展示版本。当前为{当前 lastVersion},修改后为{NEW}。是否确认?不要默认选「是」,等用户明确确认。
具体版本号(如 1.4.0)自动推断为文档版本号(1.4.x)。
Phase 2:创建英文文档
Step 1:复制英文文档目录
cp -r docs/versioned_docs/version-{BASE}/ docs/versioned_docs/version-{NEW}/
Step 1.5:清理旧版本 Release Notes(仅主版本号变更时)
当主版本号(major.minor)不同时(如 1.4.x → 1.5.x):
- 删除
docs/versioned_docs/version-{NEW}/Release Notes/下除index.md外的所有v*.md - 重写
index.md:
---
sidebar_position: 1
---
# Release Notes
Step 2:复制版本侧边栏
cp docs/versioned_sidebars/version-{BASE}-sidebars.json docs/versioned_sidebars/version-{NEW}-sidebars.json
Step 3:创建 Release Note(如果需要)
英文模板 docs/versioned_docs/version-{NEW}/Release Notes/v{VERSION}.md:
# v{VERSION}
## Release Date
{Mon DD, YYYY}
---
TODO
中文模板 docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}/Release Notes/v{VERSION}.md:
# v{VERSION}
## 发布日期
{YYYY} 年 {M} 月 {D} 日
---
TODO
Step 3.5:更新 Release Notes 索引
在英文 docs/versioned_docs/version-{NEW}/Release Notes/index.md 标题行下方第一行插入:
* [release v{VERSION}](v{VERSION}.md)
Phase 3:创建中文文档
Step 4:复制中文文档目录
cp -r docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{BASE}/ docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}/
Step 4.5:清理中文旧版本 Release Notes(仅主版本号变更时)
与 Step 1.5 同理:
- 删除
docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}/Release Notes/下除index.md外的所有v*.md - 重写
index.md(中文版标题为# 版本说明):
---
sidebar_position: 1
---
# 版本说明
Step 5:创建中文侧边栏翻译 JSON
cp docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{BASE}.json docs/i18n/zh-Hans/docusaurus-plugin-content-docs/version-{NEW}.json
修改新 JSON 文件中的 version.label:
{
"version.label": {
"message": "{NEW}",
"description": "The label for version {NEW}"
}
}
Phase 4:更新配置
Step 6:更新 versions.json
在 docs/versions.json 数组开头插入 {NEW}。
Step 7:更新 docusaurus.config.js(仅用户明确确认后)
修改 docs/docusaurus.config.js 中的 lastVersion 从 {BASE} 为 {NEW}。用户选择不修改则跳过。
Phase 5:验证
Step 8:构建验证
cd docs && npm run build
构建成功后启动预览:
cd docs && npm run serve
npm run serve基于构建产物启动,支持中英文切换验证。npm run start仅加载默认语言,无法验证中文。
Step 9:手动检查清单
✅ 文档验证清单:
英文版本检查:
□ 版本下拉菜单中是否显示新版本
□ 默认展示版本是否符合预期
□ 英文文档页面是否正常渲染
□ Release Notes 是否按版本号倒序排列
□ 侧边栏导航是否完整
中文版本检查(右上角语言切换):
□ 中文文档页面是否正常显示
□ 侧边栏分类名称是否正确翻译
□ Release Notes 内容是否与英文版本对应
后续工作:
□ 更新新版本英文文档中的具体内容
□ 更新中文文档翻译内容
□ 如有 Release Note,补充具体发布内容
注意事项
docs/rock/是未发布版本源码,includeCurrentVersion: false不会发布HiddenSidebars中的文件会从侧边栏隐藏,但仍可通过直接链接访问- 详细 i18n 配置、侧边栏管理、翻译流程参见 references/i18n-guide.md
Source: alibaba/ROCK — distributed by TomeVault.