开发指南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 只组合和授予,不能发明一个目标模块或平台应用并未提供的权限。