扩展结构
ClipCC 扩展必须以 zip 格式打包为 *.ccx
文件。
在 *.ccx
文件内部的根目录下,必须包含 info.json
和 main.js
两个文件。
扩展信息
在扩展文件内部根目录下的 info.json
为扩展的基本信息,该文件中各字段必须按照下面规定的方式填写。缺少必要字段的,应当拒绝加载该扩展;有无用字段的,不对无用字段做任何响应。
{
"id": "extension.example",
"author": "Clip Team",
"version": "1.0.0",
"icon": "assets/icon.jpg",
"inset_icon": "assets/inset_icon.svg",
"api": 1,
"optional": false,
"dependency": {
"anothor.extension": "0.1.0"
}
}
字段说明
字段说明(标注有可选的表示这一选项是可选的,否则必须填写):
id:插件的 ID,必须是唯一的,推荐的写法为 作者ID.插件名
,其中整个 ID 必须满足 [a-zA-Z0-9_-]+
。不推荐使用多个 .
分割 ID,如有必要,每个 .
之间必须至少有一个合法的字符。
author:作者名,可以是一个字符串,或者一个列表。
version:版本。
icon:插件头图。
inset_icon:插件小图标。
api:API 版本标识(标准版本),如果当前的编辑器不支持该 API,则应当拒绝加载该扩展。
optional:(可选)是否是可选的扩展,默认为 false
。如果设为 true
则表示这个扩展是可选的,不加载并不会对作品文件造成影响。如果为 false
表示这个扩展必须被加载才能保证作品文件正常打开,例如这个扩展添加了新的模块。
dependency:(可选)依赖的扩展,键为扩展 ID,值为依赖的版本。版本号有如下格式:1.2.0
表示版本只能为 1.2.0
;1.2.*
表示版本号可以为 1.2.0
、1.2.1
等,在匹配中 *
可以出现多次,但必须表示版本号中完整的某一段,即 1.2.3*
是不合法的,并且 *
不能出现在包含 ^
或 ~
开头的版本号匹配中;^1.2.3
表示版本号大于等于 1.2.3
但小于 2.0.0
;~1.2.3
表示版本号大于等于 1.2.3
但小于 1.3.0
。
入口文件
在扩展文件内部根目录下的 main.js
为扩展的入口文件,在扩展被加载到编辑器时,该文件将被载入编辑器并执行。
入口文件必须显式导出一个类,该类应当实现 onInit
和 onUninit
方法(但不是强制的),以响应加载和卸载事件。
目前,扩展导出的类必须以 CommonJS 形式导出,即导出到 module.exports
。
下面是一个基于 CommonJS 规范的扩展最小实现:
class HelloExtension {
onInit() { /* ... */}
onUninit() { /* ... */ }
}
module.exports = HelloExtension;