阅读(1517) (0)

扩展描述文件package.json

2019-03-27 15:51:18 更新

扩展描述文件是一个扩展必须提供的文件,用来描述一个扩展的名称、类型及其他关键信息的配置文件。喧喧的扩展描述文件文件名为 package.json ,兼容 npm 包管理器中的 package.json 文件。一个最简单的应用扩展仅需要在扩展包中包含描述文件即可实现。以下为扩展描述文件中支持的配置项目:

{     
    // 扩展的名称,扩展名称只能包含字母、数字、短横线及下划线,且第一个字符必须为字母     
    // 扩展的名称必须唯一,相同名称的扩展会提示覆盖或升级,为避免与其他扩展发生冲突,也可以使用 guid 做为扩展名称     
    "name": "simple-extension",      
    
    // 扩展在界面上显示的名称     
    "displayName": "简单扩展", 
        
    // 扩展的描述或介绍文本     
    "description": "这是一个简单扩展的例子。",     
    
    // 扩展配置     
    "xext": {         
        // 扩展类型,目前支持的类型包括:         
        //   * app    -  应用扩展         
        //   * plugin -  插件扩展         
        //   * theme  -  主题扩展         
        "type": "app",         
        
        // 扩展图标,可以使用如下值         
        //   * 使用 Material Design Icons (https://materialdesignicons.com/),使用 mdi- 前缀,例如 mdi-star         
        //   * 使用 http:// 或 https:// 协议开头页面地址,例如 https://www.programbbs.com/pic/xuan_dev/icon.png         
        //   * 使用相对扩展包目录的相对地址,例如 img/icon.png         
        // 需要注意:         
        //   * 当扩展类型为 app 时,如果不指定则会使用应用图标(appIcon)         
        //   * 如果使用图片作为扩展图标,确保作为图标的图片长宽比例为1:1(正方形图片),并且大小不小于 512x512         
        "icon": "mdi-star",         
        
        // 扩展主要颜色,可能被用到自动生成的图标上或作为部分界面背景         
        "accentColor": "#aa00ff",    
             
        // 针对扩展类型 app - 应用界面类型         
        // 可选值包括:         
        //   * insideView:提供 React 组件作为界面视图         
        //   * webView:完整的网页视图         
        "appType": "insideView",   
              
        // 当 appType 为 webView 时加载的页面地址,可以包含以下格式的地址:         
        //   * 使用 http:// 或 https:// 协议开头的网站页面地址,例如 http://zui.sexy/m         
        //   * 使用相对扩展包目录的相对地址,通常指向一个 html 文件,例如 lib/page/index.html         
        "webViewUrl": "http://zui.sexy/m",  
               
        // 当 appType 为 webView 时,指定一个脚本在 webview 页面中其他脚本执行之前先加载,此脚本必须为扩展包内的 JavaScript 文 件。         
        "webViewPreloadScript": "lib/preload.js",   
              
        // 针对扩展类型 app - 应用图标,可以使用如下值         
        //   * 使用 Material Design Icons (https://materialdesignicons.com/),使用 mdi- 前缀,例如 mdi-star         
        //   * 使用 http:// 或 https:// 协议开头图片地址,例如 https://www.programbbs.com/pic/xuan_dev/icon.png         
        //   * 使用相对扩展包目录的相对地址,例如 img/icon.png         
        // 需要注意:         
        //   * 如果不指定则会使用扩展图标(icon)作为应用图标         
        //   * 如果使用图片作为应用图标,确保作为图标的图片长宽比例为1:1(正方形),并且大小不小于 512x512         
        "appIcon": "mdi-star", 
                
        // 针对扩展类型 app - 应用配色,可能被用到图标上,如果不指定会使用扩展的 accentColor         
        "appAccentColor": "#aa00ff",    
             
        // 针对扩展类型 app - 界面背景色,可以设置为透明(transparent),默认为白色 #fff         
        "appBackColor": "#fff",         
        
        // 针对扩展类型 plugin 或 app - 模块主要入口脚本文件位置,可以包含以下格式的地址:         
        //   * 使用相对扩展包目录的相对地址,例如 lib/index.js         
        // 当扩展类型为 plugin 时会自动从扩展包目录下寻找 index.js 文件作为模块主入口文件         
        "main": "lib/index.js",     
           
        // 是否允许热加载扩展,默认值为 false,如果设置为 true,则安装扩展后无需重启才能使用,但 onUserLogin(用户已经登录后,如果是重新登录仍然会生效) 和 replaceViews 将不会立即生效(仍然需要在下次重启时生效)         
        "hot": false,        
         
        // 针对扩展类型 theme - 主题列表         
        // 通过一个对象数组,声明多个主题配置         
        "themes": [             
            {                 
                // 主题内部名称                 
                "name": "dark",                 
                // 主题的描述文本,可能会在界面上显示                 
                "description": "这是一个暗黑主题",                 
                // 主题显示名称                 
                "displayName": "暗色",                 
                // 主题 CSS 文件位置,可以是相对包的路径或者一个可访问的网址                 
                "style": "lib/themes/dark.css",                 
                // 主题的主要颜色                 
                "color": "#ff00f1",                 
                // 主题载入方式,可取值包括:                 
                //   * append   在默认样式的基础上附加样式                 
                //   * override 替代默认样式                 
                "inject": "override",                 
                // 主题的预览图片地址                 
                "preview": "lib/themes/preview-dark.png"             
            }         
        ],         
        // 为消息定义右键菜单项目         
        "chatMessageMenu": [             
            {                 
                "label": "保存消息文本到文件",                 
                "url": "!${EXTENSION}/saveText/?messageId=${messageId}"             
            }             
            // 更多右键菜单         
        ],    
             
        // 扩展配置(1.3 中尚未实现)         
        "configurations": [             
            {                 
                // 配置项名称                 
                "name": "cfg1",   
                               
                // 配置项显示名称                 
                "displayName": "配置项一",     
                            
                // 配置项描述                 
                "description": "配置项一的说明",   
                              
                // 配置项默认值                 
                "defaultValue": "默认值",      
                           
                // 配置项值类型,可选值包括                 
                "valueType": "string",         
                        
                // 用于验证配置值是否合法的正则表达式                 
                "matchReg": "[a-zA-Z0-9]+",              
            }         
        ]     
    },   
      
    // 扩展的版本     
    "version": "1.0.0",    
     
    // 扩展开发的作者     
    "author": "Catouse",  
       
    // 扩展的发布者     
    "publisher": "易软天创",   
      
    // 扩展要求的运行环境     
    "engines": {     
        
        // 扩展对喧喧版本的支持         
        "xuanxuan": "^1.3.0",
                 
        // 扩展所支持的平台         
        "platform": "electron,nwjs",
                 
        // 扩展所依赖的其他扩展         
        "extensions": [],     
    },     
    
    // 扩展版权声明     
    "license": "MIT",
         
    // 扩展主页     
    "homepage": "http://xuan.im/extensions",  
       
    // 扩展关键字,可以用于搜索     
    "keywords": ["xuanxuan", "im", "extension", "sample"],
         
    // Bugs 反馈页面     
    "bugs": {       
        "url": "https://github.com/easysoft/xuanxuan/issues"     
    }, 
        
    // 代码库地址     
    "repository": {         
        "url": "https://github.com/easysoft/xuanxuan/",         
        "type": "git"     
    },     
    
    // ...兼容其他 npm package.json 属性 
}