跳到主要内容

扩展结构

ClipCC 扩展必须以 zip 格式打包为 *.ccx 文件。

*.ccx 文件内部的根目录下,必须包含 info.jsonmain.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.01.2.* 表示版本号可以为 1.2.01.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 为扩展的入口文件,在扩展被加载到编辑器时,该文件将被载入编辑器并执行。

入口文件必须显式导出一个类,该类应当实现 onInitonUninit 方法(但不是强制的),以响应加载和卸载事件。

目前,扩展导出的类必须以 CommonJS 形式导出,即导出到 module.exports

下面是一个基于 CommonJS 规范的扩展最小实现:

class HelloExtension {
onInit() { /* ... */}
onUninit() { /* ... */ }
}

module.exports = HelloExtension;