MIP DESKTOP · 扩展开发
Manifest 规范
通过清单声明扩展身份、入口、权限和贡献点。
manifest.json 是扩展包的入口契约。安装器根据它确认身份、入口与权限,页面和命令的命名也应与它保持一致。
必要字段
| 字段 | 用途与要求 |
|---|---|
schemaVersion |
当前使用数字 1 |
id |
全局唯一,使用小写字母、数字、点和连字符 |
displayName、publisher |
面向用户的扩展名与发布者 |
version |
扩展自身的 SemVer,例如 1.0.0 |
engines.desktop |
目标 Desktop 产品版本范围,按实际发行版验证 |
engines.extensionApi |
需要的扩展 API 版本范围 |
permissions |
仅声明实际使用且被目标宿主支持的权限 |
contributes |
页面、命令及其他支持的贡献点 |
只提供 WebView 的扩展可以省略 main。需要注册 Host 命令时,main 指向包内的 CommonJS .js 文件。
添加 Host 命令
下面的片段应合并到完整清单,不能单独作为安装包 Manifest:
{
"main": "dist/extension.js",
"activationEvents": ["onStartupFinished"],
"permissions": ["webview"],
"contributes": {
"commands": [
{ "command": "mip.example.notes.open", "title": "打开便笺" }
]
}
}
再在 Host 中注册同一个命令。清单声明用于宿主发现,运行时注册负责实际处理,两者不能互相替代。
命名与包内路径
扩展为 mip.example.notes 时,命令和 View 使用相同的命名空间,例如 mip.example.notes.open、mip.example.notes.home。
入口必须指向实际存在的包内相对文件;main、WebView 及其他资源不使用开发机绝对路径、file:// 或宿主开发服务器地址。HTML 内部的资源同样使用包内相对路径。
{
"contributes": {
"views": [
{
"id": "mip.example.notes.home",
"title": "便笺示例",
"type": "webview",
"entry": "webviews/home/index.html"
}
]
},
"webviews": {
"mip.example.notes.home": "webviews/home/index.html"
}
}
以上示例中的 views 与 webviews 需使用一致的 View ID 和入口路径。
版本与依赖
修复兼容问题提升 patch;增加兼容能力提升 minor;改变命令参数、存储格式或其他不兼容契约时提升 major,并提供迁移说明。
跨扩展调用公共命令前,应在 extensionDependencies 中声明目标扩展,并确认目标已经安装、启用且贡献该命令。不要用某个命令存在的假设替代依赖声明。
{
"extensionDependencies": ["mip.example.shared"]
}
权限与发布字段
storage、webview、identity.read、http 等权限含义各不相同;页面入口可见不代表可以读取身份或调用后台。查看 权限与身份。
完整性和签名字段由匹配的发布工具生成,不手填伪值,也不把普通 ZIP 改名视为完成正式发布。安装、签名与实际版本的检查见 发布指南。
基础契约:Extension API 1.x;具体能力以目标 Desktop 发行版为准。