应用市场打包规范
核心包、模块包、插件包、主题包的目录边界、依赖和发布前检查
应用市场打包规范
应用市场安装必须尊重核心、模块、插件和主题边界,不能用扩展包覆盖核心文件。
一、包类型
| 包类型 | 内容 |
|---|---|
| 核心包 | TanzCMS 主版本代码和核心迁移 |
| 模块包 | modules/{code}、模块资源、模块模板和模块数据 |
| 插件包 | plugins/{code}、插件资源和插件模板 |
| 主题包 | themes/{theme} 和公开主题资源 |
二、模块包边界
模块包可以包含:
modules/{code}
public/assets/modules/{code}
themes/default/modules/{code}
模块包不应覆盖:
app/
config/
routes/
public/assets/admin/js/公共后台脚本
如果模块依赖新的核心能力,应通过版本依赖要求用户先升级核心。
三、插件包边界
插件包可以包含:
plugins/{code}
public/assets/plugins/{code}
themes/default/plugins/{code}
插件不得把业务逻辑复制到核心,也不得修改核心配置或公共后台脚本。
四、主题包边界
主题包可以包含:
themes/{theme}
public/themes/{theme}
主题包不包含模块服务、插件服务、控制器、迁移和数据库数据。
五、必须排除
公开包通常排除:
.git/
node_modules/
tests/
docs/
storage/logs/
storage/framework/cache/
storage/framework/sessions/
storage/framework/views/
public/uploads/
.env
临时压缩包
本地脚本输出
六、安装流程
推荐流程:
- 下载到临时目录。
- 校验 hash、签名、manifest 和目标版本。
- 检查 PHP 扩展、数据库、模块和插件依赖。
- 复制自身文件。
- 执行迁移。
- 发布静态资源。
- 同步菜单、权限、标签和命令。
- 可选导入初始数据。
- 清理缓存。
- 写安装日志。
七、初始数据
带初始数据的模块应提供:
- 空库导入。
- 按唯一字段更新。
- 清空后重新导入。
- 跳过导入。
不要强制覆盖用户已经维护的数据。