百积木文档
开发指南Bundle 开发

Manifest 与资源边界

使用精确模块版本和平台应用版本定义 Bundle。

Bundle Manifest 描述产品需要组合哪些不可变资源。资源必须先由各自服务生成不可变版本, Bundle 不能用源代码路径、构建任务或可变“最新版”替代。模块定义必须归属当前 Bundle; Manifest 再用精确版本声明本次 Bundle 版本要交付哪一个模块快照。

示例

{
  "backendModules": [
    {
      "moduleId": 2200,
      "semanticVersion": "1.3.0"
    }
  ],
  "platformApplications": [
    {
      "platformAppId": "teacher-management",
      "version": "1.2.0"
    }
  ],
  "dependencies": [
    {
      "bundleId": "workspace-core",
      "version": "2.0.0"
    }
  ]
}

资源规则

  • 模块必须在当前 Bundle 内创建,并使用 moduleId + semanticVersion;新 Manifest 使用 backendModules
  • 平台应用必须使用稳定 platformAppId 和精确版本。
  • 跨工作区资源不能直接引用,应通过已经公开发布的精确 Bundle 依赖。
  • Bundle 依赖必须使用精确版本,并且不能形成循环。
  • 前端文件、Hosted Service Artifact、buildJobId、数据库连接和服务 token 不进入 Manifest。
  • 原始 runtime service、任意请求 URL 或自定义安装路径不能代替模块版本。

生命周期插件不属于模块定义

模块只是 Bundle 的一种资源。普通 Bundle 和可配置 Bundle 不需要生命周期插件,也不要 为了保存数据、连接已有第三方账号或让 Bundle 自动安装模块而添加插件。

当整个 Bundle 的安装、升级或卸载必须管理平台外部资源时,才使用 Bundle 生命周期插件。 插件服务先独立部署和注册,Bundle 引用注册记录;插件程序、真实 Endpoint 和访问 token 都不进入 Manifest。

Bundle 顶层生命周期插件协议仍属于高级能力。编写声明前先查看 Bundle 生命周期插件 中的能力状态和版本要求,不要继续在新模块中发明模块级插件绑定。

权限

Bundle 定义可以声明请求权限和对外提供的权限。权限必须由资源所有者先注册,Bundle 只组合和授予,不能发明一个目标模块或平台应用并未提供的权限。

本页内容