开发工作流
本页用于说明如何在不破坏 frontmatter、运行时与渲染层契约的前提下修改模板。
先从模板仓库开始
该仓库是框架层的上游事实来源。
只要改动属于模板能力本身,就应先在这里实现与验证,再同步到 CrychicDoc 之类的下游站点。
推荐顺序:
- 先修改
docs/.vitepress/utils/vitepress/api/**。 在这里更新类型、schema、规范化逻辑、注册表输入结构与兼容行为。 - 再修改
docs/.vitepress/utils/vitepress/runtime/**。 主题稳定、DOM 观察、尺寸同步、调度与自适应状态都应进入共享运行时。 - 最后修改
docs/.vitepress/theme/components/**。 视图组件应保持轻量,只消费规范化后的配置与运行时状态。 - 在同一次改动中补充
docs/src/**示例与参考文档。 任何新增 frontmatter 键或扩展点都应至少有一个真实 markdown 示例。 - 模板构建稳定后,再同步到下游仓库。
校验命令
框架改动后,请在 docs/ 目录执行:
bash
yarn locale
yarn sidebar
yarn tags
yarn build若改动影响项目配置或 frontmatter 契约,还应执行:
bash
yarn sync-config
yarn frontmatter改动归类规则
动手前,先判断改动属于哪一层:
docs/.vitepress/utils/vitepress/api/**契约层。负责 schema、规范化、注册表与扩展类型。docs/.vitepress/utils/vitepress/runtime/**共享运行时。负责主题同步、尺寸监听、调度与共享生命周期。docs/.vitepress/theme/components/**渲染层。负责 Vue 结构、轻量组合与局部表现逻辑。docs/.vitepress/config/**项目默认配置、语言配置、Shader 注册与插件组合。docs/.vitepress/plugins/**Markdown-it 插件实现。docs/.vitepress/theme/styles/**全局样式层、共享 CSS 变量与组件皮肤。docs/src/**面向使用者的文档、示例与扩展手册。
常见任务起点
遇到这些任务时,优先从下面的入口开始:
- 新建普通页面 先在两个语言目录中创建相同相对路径的 markdown 文件,再决定是否需要新增顶层导航入口。
- 新建 Hero 页面
先从
layout: home与hero/featuresfrontmatter 开始;如果需要新的 Hero 配置键,先改api/frontmatter/hero/**,再改渲染组件。 - 新建可复用组件
先在
docs/.vitepress/theme/components/**创建组件,再补齐完整注册链:component registry 导出、全局 markdown 注册、locale JSON、component-id-mapping.json。 - 新建 Hero 特性
先改
docs/.vitepress/utils/vitepress/api/frontmatter/hero/**,再在runtime/hero/**放共享状态,最后再改theme/components/hero/**。 - 新建 Markdown 插件
先在
docs/.vitepress/plugins/**实现,再接入docs/.vitepress/config/markdown-plugins.ts,并补齐渲染组件注册。
上游到下游同步规则
当框架改动需要同步到产品仓库时:
- 先完成模板实现。
- 先在模板中完成构建与视觉校验。
- 再将相同的契约、运行时与视图改动同步到下游。
- 尽量保持命名与文件职责一致,保证后续同步仍然机械化、可追踪。
- 除非产品仓库真的产生分叉,否则不要添加下游专属补丁式逻辑。
提交前检查清单
在认为改动完成前,先检查:
- 事实来源是否清晰? 契约逻辑不应散落在组件中重复实现。
- 运行时是否共享?
重复的
MutationObserver、ResizeObserver或直接 DOM 主题读取通常应进入runtime。 - 扩展点是否已文档化?
新键、新类型、新注册表都应出现在
docs/src。 - 示例是否真实可编译? 优先使用真实 YAML 与真实组件名,不要写伪代码式配置。
- 下游同步路径是否清楚? 未来维护者应能按相同文件地图完成同步。
常见错误
- 直接在 Vue 组件中新增临时解析逻辑
- 在业务组件里直接读取 dark-mode DOM 类名
- 明明可以用 CSS 变量契约,却先写一条临时全局样式
- 新增扩展点却没有同步文档与示例
- 先在下游仓库实现,再反向尝试回填模板
相关页面
- — 框架代码的归属与分层扩展检查清单
- — Hero 系统扩展的分步指南
- — 可用 frontmatter 键的完整列表
- — 所有扩展 API 的深度技术参考