酷大师插件格式要求
酷大师插件配置文件manifest.json格式如下:
{
    "name": "testPlugin", // 表示插件名称
    "id": "F4A41464-36D1-D915-77DF-DC3EBEEEFCA0", // 插件唯一识别码,通过酷大师插件平台创建插件时自动生成,不可更改。
    "version": "1.0.0",  // 表示插件版本,由用户设置
    "view": "", // 表示插件ui文件,其值可为html文件路径或者url(需http/https开头)
    "main": "",  // 表示插件沙盒js代码文件,必须为文件路径
    "position": "footerLeft", // 自定义插件入口位置
    "multiViews": [ // 表达插件多 ui 情况下,每个 ui view的描述;此字段和“view”互斥,不能同时有值
      {
        "id": "example_view_1_id", // 第一个view 的 id
        "pos": "AssetPanel", // 第一个view 的位置,只可取"AssetPanel"或"PropertyPanel"。目前,多个不同的view不能指定同一个pos 位置
        "size": "default", // 预留可选字段. 第一个view 的尺寸,可取"default", "200*500"等值. 当"pos"为 "AssetPanel", "PropertyPanel"时,此值只能为 default
        "content": "https://example_plugin.com/example_view_1.html", // 第一个 view 的内容,其值可为html文件路径或者url(需http/https开头)
      },
  
      {
        "id": "example_view_2_id",
        "pos": "PropertyPanel",
        "content": "https://example_plugin.com/example_view_2.html"
      },
  
      "..." // 第n个view
    ],
    "translations": "./translations.json" // 开发者提供的特定内容的多语言资源,参见7
}
- “name”、“id”、“version” 是必填字段。
- 如果用户的插件包含沙盒js代码:- 需设置“main”字段为沙盒代码对应的 js 文件路径(不可为 url)。用户所有在沙盒中运行的 js 代码必须在该文件中(可通过webpack等工具打包),不支持js模块导入。
- 如果此时用户插件有 UI 界面,则可设置 “view” 或 “multiView” 字段为对应的 UI html 文件路径或 url,否则设置为空即可。
 
- 如果用户的插件不包含沙盒js代码,需设置 “main” 字段为空,且设置 “view”, “multiViews” 字段为插件 UI html 的 url (不可为文件路径)。当载入插件时,酷大师会自动展示插件 UI。
- “main”字段和“view”,“multiViews" 字段不可同时为空;“view” 和 “multiViews" 不可同时非空。
- 当插件只需要一个 UI 界面窗口时,推荐使用 "view" 字段指定。“position” 指定了 UI 窗口在酷大师中出现的位置,是可选字段。它目前仅支持 default、footerLeft 两种取值:- 若不指定 “position” 字段或字段取值为 default,则插件入口出现在酷大师顶部栏的插件列表中(见图1)
- 若取值为 footerLeft,插件入口出现在酷大师底部栏左侧。注意:此时需要提供插件入口对应的图标,即为酷家乐应用中心“发布管理”部分上传的插件图标(见图2)
 
 
 
 
 
- 当插件需要多个 UI 界面窗口时,推荐使用 "multiViews" 字段指定这多个 UI 的 html。每个 UI 窗口的位置,由 "multiViews" 里的 “pos” 字段指定,目前可取 AssetPanel、PropertyPanel 两种值,且多个不同的 UI 窗口不可取同一个 “pos” 值。因此,目前一个插件最多同时支持有两个 UI 界面窗口。
- translations.json表示特定内容的多语言资源,特定内容目前只有插件标题:以"pluginName"为key,目前仅支持下列语言的多语言翻译: "default"(默认值),"zh_CN"(中文),"en_US"(英文),"zh_TW"(繁体中文),"en_CN"(英文),"es_ES"(西班牙语),"ar_EG"(阿拉伯语),"fr_FR"(法语),"de_DE"(德语),"ru_RU"(俄语),"ja_JP"(日语),"ko_KR"(韩语)"it_IT"(意大利语),"th_TH"(泰语),"pt_PT"(葡萄牙语4文),"id_ID"(印度尼西亚语),"ro_RO"(罗马尼亚语),"pl_PL"(波兰语)。
如:
{
    "pluginName": {
        "default": "Path Array Plugin",
        "zh_CN": "路径阵列插件",
        "en_US": "Path Array Plugin",
        "zh_TW": "Path Array Plugin",
        "en_CN": "Path Array Plugin",
        "es_ES": "Path Array Plugin",
        "ar_EG": "Path Array Plugin",
        "fr_FR": "Path Array Plugin",
        "de_DE": "Path Array Plugin",
        "ru_RU": "Path Array Plugin",
        "ja_JP": "Path Array Plugin",
        "ko_KR": "Path Array Plugin",
        "it_IT": "Path Array Plugin",
        "th_TH": "Path Array Plugin",
        "pt_PT": "Path Array Plugin",
        "id_ID": "Path Array Plugin",
        "ro_RO": "Path Array Plugin",
        "pl_PL": "Path Array Plugin"
    }
}
开发提示
- 本地调试开发时生成的“ui.html”可能过大,尤其在引入一些组件库时,可以考虑将"ui.html"单独作为一个前端服务,具体示例可以参考路径阵列插件。
dev/manifest.json:
{
    "name": "path-array-plugin-title",
    "id": "QyJDUjPlZWSNIBm",
    "version": "1.0.0",
    "view": "http://localhost:8082/ui.html",
    "main": "./src/main.js"
}
webpack中配置:
    devServer: {
        hot: true,
        port: "8082",
        open: true,
        contentBase: 'dist/dev/src',
        proxy: {
            // 接口请求代理
        }
    }
- 当开发者使用 webpack 进行打包并且使用 “multiViews” 时,若 content 为 html 文件路径格式,则需要同时设置 webpack.config.js 中的 entry 和 plugins 配置,如:
{
  "entry": {
    "main": "./src/main/main.ts", // 插件代码入口起点
    "assetUi": "./src/view/assetUi.ts", // UI代码入口起点
    "propertyUi": "./src/view/propertyUi.ts", // UI代码入口起点
  },
  "plugins": [ // 打包生成每个view对应的html文件
    new HtmlWebpackPlugin({
      template: './src/view/assetUi.html',
      filename: 'assetUi.html',
      inlineSource: '.(js)$',
      chunks: ['assetUi'],
      inject: true,
    }),
    new HtmlWebpackPlugin({
      template: './src/view/propertyUi.html',
      filename: 'propertyUi.html',
      inlineSource: '.(js)$',
      chunks: ['propertyUi'],
      inject: true,
    }),
  ],
}