多子站点架构
Lynx 网站作为一个“迷你子站点”(例如 Lynx、ReactLynx、Rspeedy)的集合运行,这些子站点都位于同一个仓库中。这种架构允许每个子站点拥有自己的身份(Logo、主页、侧边栏),同时共享公共文档和基础设施。
配置
子站点的中心配置位于 shared-route-config.ts。此文件作为单一事实来源:
- 子站点元数据:定义可用子站点的列表。
- 共享路由:定义哪些文档部分在子站点之间共享。
SubsiteConfig
每个子站点由 SubsiteConfig 对象定义:
添加新子站点
要添加新子站点(例如 my-framework):
- 创建目录:创建
docs/en/my-framework/(和docs/zh/my-framework/)。 - 更新配置:在
shared-route-config.ts的SUBSITES_CONFIG中添加新条目。 - 配置侧边栏:创建
docs/en/my-framework/_meta.json以定义其特定的侧边栏结构。
共享文档
为了避免在多个子站点之间重复内容(如“快速上手”指南),我们使用共享文档系统。
工作原理
- 事实来源:共享文件物理位置在
docs/en/guide/start/。 - 虚拟路由:
rspress.config.ts中的sharedSidebarPlugin动态地为其他子站点创建虚拟页面(例如react/start/quick-start),指向相同的内容。 - 统一侧边栏:
BeforeSidebar组件(在theme/BeforeSidebar.tsx中)自动将共享的“开始”部分注入每个子站点的侧边栏。
管理共享内容
要修改哪些文件被共享,请更新 shared-route-config.ts 中的 SHARED_DOC_TITLES。
子站点 UI
子站点导航和身份由自定义主题组件处理:
SubsiteSelect(theme/BeforeSidebar.tsx):侧边栏顶部的下拉菜单允许用户在子站点之间切换。SubsiteLogo(theme/subsite-ui.tsx):渲染当前子站点和主题模式的正确 Logo。
这些组件直接从 SUBSITES_CONFIG 读取,因此其中的任何更改都会立即反映在 UI 中。