行为包动态构建管线
SFMC 采用动态打包机制:所有已启用的业务模块在开服或执行热重载时,由构建系统自动编译并注入到世界目录的 sfmc-modules 行为包(BP)与资源包(RP)中。本文介绍该构建管线的流程与关键规则。
1. 构建流程与产物
构建流程由 CLI 与 @sfmc-bds/bds-tools 的 pack-manager 协调执行:
产物路径一览
2. 打包规则
- 仅打包已启用模块:只有在
modules/module-lock.json中标记为"enabled": true的模块才会参与编译,禁用模块不会打包进产物。 - 宿主引导注入:以
installHostBootstrap()脚本为入口,在system.beforeEvents.startup事件中初始化ConfigManager并集中触发各模块的注册。 - 原生依赖外部化:所有官方运行时包(
@minecraft/server、@minecraft/server-ui、@minecraft/server-net等)均声明为 external,由 BDS 引擎原生提供,不打入 bundle。 - 空包容底保护:若所有业务模块均被禁用,构建系统仍会生成合法的空行为包骨架,避免 BDS 因缺少包报错。
3. 常用构建与重载命令
:::tip 启动时自动检查 (Load Gate)
执行 sfmc /start bds 时,系统会自动比对世界目录内 sfmc-deploy-catalog.json 与当前本地模块的源码哈希:
- 无变更:直接跳过构建开服。
- 检测到模块增删或源码变更:自动执行增量构建并部署后再启动服务端。 :::