目录与组件清单

逐项填写 manifest,理解发现、版本、类别与依赖顺序。

扩展 API v1按当前源码核对
本页目录

一个清单负责哪些事情#

manifest.json 描述组件身份、类别、入口、资源顺序和宿主要求。它不是业务实现,也不会因为写了某个权限名称就自动创建接口。

下面以完整效率插件示例为准:

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#

text
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,不靠来源类型扩权。
  • 宿主最低版本覆盖实际用到的接口。
  • 在真实开发版扫描、启用、打开并重新打开过一次。
下载本页 Markdown