| .. | ||
| migration-guide.md | ||
| README.md | ||
XControl CMS 平台指南
本文档介绍如何使用全新的 CMS 配置、扩展生态以及主题定制流程,帮助团队快速落地内容管理方案。
使用说明
- 配置文件位置:所有实例统一使用
config/cms.json描述模板、主题、扩展及内容源。提交前可运行make lint-cms或 GitHub Actions 自动校验以确保配置符合 JSON Schema。 - 模板管理:
templates数组声明可用模板的name与入口文件entry;- 可添加
description与previewPath提供运营预览信息; - 模板内可读取主题变量
theme.variables,应通过公共的@xcontrol/cms-themeSDK 获取。
- 主题切换:
theme字段记录版本、作者与可覆写的变量;- 在 CI/CD 中读取
theme.version控制静态资源缓存; - 自定义变量建议遵循
kebabCase或camelCase,并在设计系统中记录来源。
- 扩展启用:
extensions数组列出扩展包;enabled=false的扩展会被打包但默认不挂载;config字段由扩展自行解析,应在扩展仓库提供 JSON Schema 或 TypeScript 类型定义;- 推荐将第三方密钥通过环境变量传入扩展,避免写入配置文件。
- 内容源配置:
contentSources支持git、filesystem、api和database四种类型;- 每个内容源都需要一个唯一的
name与自定义options; - 若设定
readOnly: true,发布面板会禁用写入操作。
扩展开发手册
- 开发准备:
- 使用
pnpm create @xcontrol/cms-extension <name>脚手架初始化项目; - 在
package.json中声明入口main与module,同时导出扩展元数据getExtensionMeta()。
- 使用
- 生命周期:
- 扩展需实现
register(app, context)方法,在其中挂载路由、配置表单或任务; - 扩展可通过
context.cmsConfig读取解析后的cms.json; - 对长耗时任务使用
context.queue.enqueue,避免阻塞渲染线程。
- 扩展需实现
- 测试与发布:
- 使用
pnpm test运行扩展单测; - 通过
pnpm build生成产物,并在dist/manifest.json中输出能力声明; - 发布到内网 NPM 仓库后,可在主项目
config/cms.json中引用。
- 使用
主题定制指南
- 继承基础主题:复制官方主题仓库
@xcontrol/cms-theme-galaxy,在tokens/中调整颜色、排版、阴影等设计变量。 - 变量发布:
- 执行
pnpm build生成theme.json; - 在仓库中创建
releases/<version>标签,与cms.json的theme.version对齐; - 将
theme.json发布到静态资源 CDN,配置THEME_REGISTRY_URL指向该地址。
- 执行
- 模板调试:
- 本地运行
pnpm dev --template <template-name>,自动读取主题变量热更新; - 使用
previewPath提供的静态图检视最终效果; - 主题变量新增时记得更新
theme.variables以同步到配置文件。
- 本地运行