目录与组件清单
逐项填写 manifest,理解发现、版本、类别与依赖顺序。
本页目录
一个清单负责哪些事情#
manifest.json 描述组件身份、类别、入口、资源顺序和宿主要求。它不是业务实现,也不会因为写了某个权限名称就自动创建接口。
下面以完整效率插件示例为准:
{
"id": "my-example-tool",
"name": "文本整理示例",
"version": "1.0.0",
"apiVersion": 1,
"minAppVersion": "2.7.5",
"author": "Your Name",
"description": "一个包含完整打开与清理流程的示例工具",
"category": "tool",
"type": "thirdparty",
"main": "main.js",
"scripts": [
"modules/text.js",
"modules/view.js"
],
"styles": [
"styles.css"
],
"permissions": [],
"slot": "workshop",
"button": {
"label": "文本整理",
"order": 100
}
}必填字段与稳定身份#
| 字段 | 含义 | 开发要求 |
|---|---|---|
id |
稳定的唯一组件 ID | 小写字母或数字开头;后续允许字母、数字、点、下划线、连字符;最长 64 字符 |
name |
用户看到的名称 | 简短清楚,不用名称承担版本识别 |
version |
当前组件版本 | 使用有效的三段语义版本,如 1.0.1;发行新内容时递增 |
main |
最终注册入口 | 包内相对路径,文件必须存在 |
type |
来源类型 | 第三方组件声明 thirdparty;最终还会受扫描来源约束 |
slot |
宿主入口约定 | 示例工具使用 workshop,任务使用 standalone;以目标版本支持为准 |
category |
扩展类别 | 工具为 tool,任务为 task;请显式声明 |
apiVersion |
扩展接口版本 | 当前使用 1 |
组件 ID 是更新身份。改 UI、改模板、补功能时继续使用原 ID;不要为了绕开同版本发布冲突新建一串 ID,否则用户得到的是另一个组件。
宿主版本与组件版本分开#
version 是组件自己的发行版本;minAppVersion 和可选的 maxAppVersion 限定宿主范围。需要一个新 preload 方法时,不能只提升组件版本,还应提升最低宿主要求,并在旧版本确认不兼容提示。
源码中的注释编号不代表宿主版本。当前项目的真实宿主版本以 package.json 为准,示例最低要求也应结合目标版本核对。
scripts、main 和 styles#
scripts[0]:底层逻辑
scripts[1]:状态或操作
scripts[2]:依赖前面模块的视图
main:最后注册组件运行时读取资源后按声明顺序执行脚本。main 不需要重复列入 scripts。所有路径都在组件根目录以内,不能使用绝对磁盘路径或 ../ 跳出组件。
样式放进 styles 数组,并以组件自己的根类名限定作用范围。图片和字体放进包内资源目录,正式加密资源的寻址按目标宿主约定处理,不能假设始终存在普通磁盘文件。
permissions 与 backend#
| 声明 | 用途说明 |
|---|---|
fs |
文件能力需求声明;不等于任意文件读写授权 |
ai |
模型相关能力需求声明;不等于存在 api.chat() |
codemirror |
编辑器相关需求 |
workspace、state |
工作区、状态相关需求 |
ipc |
对实际桥接能力的需求声明 |
类别必须贯穿发行流程#
任务的 category: task 对应当前分类发行格式 .mrite-task;效率工具的 category: tool 对应 .mrite-component。旧 .mrite-plugin 可能仍由兼容流程处理,但不能通过改后缀改变类别。
安装会验证包内容及签名中的类别,文件扩展名不是唯一依据。不要拿任务清单配工具发行格式。
清单提交前检查#
- JSON 无注释、无尾逗号,所有引用文件存在。
- ID 在清单、注册入口与后续发行记录中一致。
- 脚本依赖顺序正确,没有读取其他组件的私有资源。
- 不使用已有内置 ID,不靠来源类型扩权。
- 宿主最低版本覆盖实际用到的接口。
- 在真实开发版扫描、启用、打开并重新打开过一次。