业务模块开发指南
本文介绍如何开发 SFMC 业务模块,涵盖脚手架初始化、目录结构、命名规范、本地联调、Manifest 配置以及发布流程。
1. 快速开始
使用官方脚手架初始化模块仓库:
向导将提示配置以下内容:
- 模块 ID(kebab-case):如
teleport、economy - 显示名称(Display Name):如
通用经济 - npm Scope:个人或团队 scope(如
@alice) - 功能选型:是否包含 SQLite 数据库支持
在 VS Code 或 Cursor 中安装扩展 SFMC Module 后,也可以通过命令面板(Ctrl+Shift+P)执行 SFMC: New Module 生成工程。
进入模块目录并安装依赖、执行类型检查:
2. 命名规范
为避免模块冲突,模块各位置的命名约定如下:
3. 开发工作流
开发业务模块的常规流程如下:
1. 编写与静态检查
编码过程中通过 TypeScript 与 ESLint 保障代码质量:
2. 挂接到本地测试服务器(Link)
将本地模块软链接到测试服务器(SFMC_ROOT)进行联调:
3. 实时监听与热重载(Watch & Reload)
在 VS Code / Cursor 中点击扩展侧边栏的 SFMC: Start Watch。每次保存 sapi/src/ 中的代码,扩展会自动增量编译并通知 BDS 热重载。
4. 发布到 npm 与社区索引
测试验证完成后,即可发布上线:
4. 模块目录结构
SDK 常用导入路径
SAPI 模块内禁止直接使用原生 fetch 请求 127.0.0.1:3001。所有数据库操作与跨模块通信必须通过 SDK 提供的 db.* 和 service.* 进行,SDK 会自动处理请求封装与 Bearer Token 鉴权。
5. Manifest 配置与语义元数据
在 sapi/manifest.json 中声明模块的基础标识、权限和依赖。推荐声明 v3 语义元数据(semantic 字段),便于工具和控制面板识别模块行为:
模块 manifest 不再支持 canDisable 与 enabledByDefault 字段(若存在会导致校验报错)。新安装的模块默认启用,服主通过 sfmc mod enable <id> 与 sfmc mod disable <id> 管理启停,在下次 BDS 冷启动时生效;升级时会自动保留已有的启停状态。
升级已有部署前,先检查 modules/packages/**/manifest.json。旧模块如果仍包含上述两个字段,应备份 manifest,再只删除这两个顶层字段;保留 modules/module-lock.json 和业务数据。迁移后重新构建、部署世界包,并启动数据服务与 BDS 验证加载结果。尚未迁移的旧声明会阻止数据服务启动。
目前 v3 尚无独立公开的 JSON Schema,示例中不设置 $schema:
语义字段说明
configKeys:该模块读取或监听的配置键列表。events.emits/listens:该模块触发或监听的事件名。dbTables:该模块创建和使用的 SQLite 数据表与核心字段。publicApi:对外暴露的公共 API 接口描述,供下游调用者参考。
版本兼容说明
- 兼容 v2:
schemaVersion: 2的模块仍可正常运行,系统加载时会自动填充缺省的semantic结构。 - 容错处理:若
semantic中可选字段格式不规范,系统仅在控制台输出警告,不会阻断模块加载。 - 更多字段规则与权限语法请参考 Manifest 契约规范。
6. 相关文档
- API 速查手册 (Cheatsheet) — 常用 API 接口与代码范例
- Manifest 契约规范 — 清单字段完整定义与权限语法
- 验证与调试策略 — 静态检查、本地联调与 BDS 运行验收
- ESLint 规则说明 — 代码风格与边界约束
- 发布你的模块 — 版本打标与 npm 发布指南