accounts/docs/cms/README.md

51 lines
3.0 KiB
Markdown
Raw Normal View History

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