扩展结构
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;