manifest.json
2026/10/26大约 2 分钟
manifest.json
清单是插件的唯一元数据来源。基座扫描 plugin/*/manifest.json 完成识别、安装、升级与入口编排。
完整示例
{
"name": "am_demo",
"title": "插件示例",
"version": "1.0.0",
"support_version": "1.0.1",
"icon": "/app/am_demo/logo.png",
"description": "",
"author": "",
"type": 1,
"dependencies": [],
"is_dev": 1,
"open_mode": "micro",
"path": "plugin/am_demo",
"entry": "/app/am_demo",
"manage_entry": "/app/am_demo/manage",
"view_root": "view",
"is_custom": true,
"is_core": 0,
"source": 1,
"scope": 1,
"platform": 1,
"frontend_routes": [],
"composer": { "require": {} },
"hook": "plugin\\am_demo\\Plugin"
}字段说明
| 字段 | 含义 |
|---|---|
name | 插件唯一标识,须匹配 /^am_[a-z][a-z0-9_]*$/(am_ 后仅小写字母/数字/下划线、首字符为字母)且 am_ 后至少 5 字符,且非保留名(见下) |
title | 显示名 |
version | 插件版本,用于安装/升级比对 |
support_version | 要求的最低基座版本,基座当前版本低于它则不兼容 |
icon | 图标地址(相对路径会自动补域名) |
type | 插件类型,默认 1(3 为三方应用,走 OAuth) |
dependencies | 依赖的其它插件标识列表 |
open_mode | 打开方式:micro(qiankun 微应用,默认)或 iframe |
path | 插件目录,默认 plugin/{name} |
entry | 前台公开入口路径,默认 /app/{name} |
manage_entry | 管理入口路径,默认 /app/{name}/manage |
hook | 生命周期类的全限定类名 |
composer | 插件自有 Composer 依赖声明 |
view_root / frontend_routes | 视图根与前端路由声明(存于 JSON) |
is_dev | 是否开发模式:1 时扫描跳过、骨架可重生成、改清单会同步落盘 manifest.json |
is_custom | 是否自定义(自建)插件:1 允许编辑信息/生成安装包 |
is_core | 是否核心插件标记 |
source | 来源:1 本地 / 市场来源(见应用中心约定,默认 1) |
scope | 可见范围(应用中心分类用途,默认 1) |
platform | 目标平台(默认 1) |
入口与"纯插件"
entry / manage_entry 只有在键不存在时才会补默认值;显式写成空串 "" 表示"无该入口"。两者都为空的插件被识别为纯插件(只提供服务/接口、无页面),前端据此隐藏"打开"按钮。
标识命名与保留名
name 的格式校验由 PluginManifestService::checkNameFormat 统一执行;另有基座兜底保留名(am_system/am_app/am_admin/am_index/am_public/am_api/am_core/am_base/am_main/am_common/am_framework/am_plugin),应用中心不可达时也会拦截。完整权威保留清单由应用中心(am_store)维护,创建前用 checkName 接口或 StoreService::checkIdentifier 校验。
兼容性判定
安装/升级时基座用 versionGte(当前基座版本, support_version) 判断兼容性:support_version 为空视为兼容,否则要求基座版本不低于它。
