configuration扩展点,会将扩展的配置项注册到HBuilderX的全局可视化配置里设置-插件配置

属性列表

title

每个插件扩展的配置是分配到同一组下的,title指的是该组的名称,一般写的是插件名称。

properties

properties内配置的是一个jsonobject对象,该对象的key代表着要扩展的配置项id,value是一个符合JSON Schema规范的jsonobject,目前支持的字段包括:

  • type 类型。支持的类型包括:string、boolean、number。
  • description 描述
  • default 默认值
  • enum 可选值,目前只有type为string或number时可用

示例

效果图如下:

commands

commands扩展点用于声明一个命令命令可以通过menus扩展点和菜单关联到一起

示例

  1. "contributes": {
  2. "commands": [
  3. {
  4. "command": "extension.firstExtension",
  5. "title": "Hello World"
  6. }
  7. ]
  8. }

snippets扩展点可以扩展指定编程语言的代码块,可扩展的编程语言Id列表见。扩展示例代码如下:

  1. "contributes": {
  2. "snippets": [
  3. {
  4. "language": "css",
  5. "path": "./snippets/css.json"
  6. },
  7. {
  8. "project":"uni-app",
  9. "language": "css",
  10. "path": "./snippets/condition_comment.json"
  11. }
  12. ]
  13. }

属性列表

代码块格式

每个配置项的说明如下表:

名称 描述
key 代码块显示名称,显示在代码助手列表中的名字,以下例子中”console.log”就是一个key。
prefix 代码块的触发字符,就是敲什么字母匹配这个代码块。
body 代码块的内容。内容中有如下特殊格式:
$1 表示代码块输入后光标的所在位置。如需要多光标,就在多个地方配置$1,如该位置有预置数据,则写法是${1:foo1},多选项即下拉候选列表使用${1:foo1/foo2/foo3};
$2 表示代码块输入后再次按tab后光标的切换位置tabstops(代码块展开后按tab可以跳到下一个tabstop;
$0 代表代码块输入后最终光标的所在位置(也可以按回车直接跳过去)。
双引号使用\”转义,换行使用多个数组表示,每个行一个数组,用双引号包围,并用逗号分隔,缩进需要用\t表示,不能直接输入缩进!
triggerAssist 为true表示该代码块输入到文档后立即在第一个tabstop上触发代码提示,拉出代码助手,默认为false。

代码块示例

viewsContainers

在窗体左侧区域扩展一个和项目管理器同级的tab项,完整的扩展视图流程参考如何注册一个新的视图?

属性列表

示例

  1. "contributes": {
  2. "viewsContainers": {
  3. "activitybar": [{
  4. "id": "demoview",
  5. "title": "DemoView"
  6. }],
  7. "rightside":[{
  8. "id":"rightsideContainerId",
  9. "title":"rightside Container Title"
  10. }]
  11. },
  12. "demoview": [{
  13. "id": "extensions.treedemo",
  14. "name": "DemoView"
  15. }]
  16. },
  17. ...
  18. }

ViewsContainerDef

属性名称 属性类型 是否必须 描述
id String 扩展的视图容器(viewContainers)的id
title String 显示在tab标签上的标题

扩展新的视图,扩展的view必须和内定义的视图容器绑定以后才能生效。目前支持TreeView和WebView,并且一个视图容器(viewsContainers)仅支持绑定一个视图(view)。在该扩展点声明后,需要通过API:或者window.createWebView实现。完整的扩展视图流程参考

TreeView 示例

  1. //NOTEpackage.json不支持注释,以下代码使用时需要将注释删掉
  2. "contributes": {
  3. "views": {
  4. //绑定的视图容器(viewContainers)的Id,目前一个视图容器仅支持绑定一个视图(view
  5. "demoview": [{
  6. //该id需要和window.createTreeView中的viewId参数一致
  7. "id": "extensions.treedemo",
  8. "name": "DemoView"
  9. }]
  10. }
  11. }

WebView 示例

从HBuilderX 2.8.1及以上版本开始支持

menus

menus扩展点会关联一个命令到相应的菜单项里面,当菜单触发时将会执行对应的命令。menus节点下配置的对象内的key指的是要注册到哪个弹出菜单里面,目前支持的key值列表如下:

  • editor/context :编辑器右键菜单
  • explorer/context :项目管理器右键菜单
  • view/item/context :通过views扩展点扩展的视图的右键菜单(从HBuilderX 2.7.12及以上版本开始支持
  • menubar/file : 顶部菜单的文件菜单
  • menubar/edit : 顶部菜单的编辑菜单
  • menubar/select : 顶部菜单的选择菜单
  • menubar/find : 顶部菜单的查找菜单
  • menubar/goto : 顶部菜单的跳转菜单
  • menubar/run : 顶部菜单的运行菜单
  • menubar/publish : 顶部菜单的发行菜单
  • menubar/view : 顶部菜单的视图菜单
  • menubar/tool : 顶部菜单的工具菜单
  • menubar/help : 顶部菜单的帮助菜单

属性列表

示例

  1. "contributes": {
  2. "menus": {
  3. "editor/context": [
  4. {
  5. "id":"sep",
  6. "group": "z_commands"
  7. },
  8. {
  9. "command": "extension.firstExtension",
  10. "group": "z_commands",
  11. "when":"editorTextFocus"
  12. ]
  13. }
  14. }

注册二级菜单

二级菜单通过将group设置为%menuId%@1、%menuId%@2的方式来实现,其中menuId指的是菜单扩展中的id字段。代码示例如下:

  1. "contributes": {
  2. "menus": {
  3. "editor/context": [
  4. {
  5. "id":"foo",
  6. "title": "带子菜单的菜单",
  7. "group": "z_commands",
  8. },
  9. {
  10. "command": "extension.firstExtension",
  11. "group": "foo@1",
  12. "when":"editorTextFocus"
  13. }
  14. }
  15. }

group

每个弹出菜单内的group都不一样,下面列出所有的弹出菜单下可用的group。

  • editor/context
    • copy
    • goto
    • copyPath
    • assist
    • z_commands

对应的位置如下图所示:

扩展点 - 图1

  • explorer/context :项目管理器右键菜单
    • new
    • openInExplorer
    • nature
    • cutcopy
    • rename
    • z_commands

对应的位置如下图所示:

  • menubar/file : 顶部菜单的文件菜单
    • new
    • tab
    • save
    • openInExplorer

对应的位置如下图所示:

扩展点 - 图2

  • menubar/edit : 顶部菜单的编辑菜单
    • undo
    • copy
    • format
    • line
    • delete

对应的位置如下图所示:

  • menubar/select : 顶部菜单的选择菜单
    • selectAll
    • area
    • word
    • line
    • colum
    • 0_cursor
    • 1_cursor

对应的位置如下图所示:

扩展点 - 图3

  • menubar/find : 顶部菜单的查找菜单
    • findFile
    • findWord
    • findSymbol

  • menubar/goto : 顶部菜单的跳转菜单
    • system_goto
    • line_goto
    • define_goto

对应的位置如下图所示:

扩展点 - 图4

  • menubar/run : 顶部菜单的运行菜单
    • 0_foot

对应的位置在菜单的末尾。

  • menubar/publish : 顶部菜单的发行菜单
    • 0_foot

对应的位置在菜单的末尾。

  • menubar/view : 顶部菜单的视图菜单
    • min_window
    • focus_editor
    • show_lineno
    • view_split
    • scroll
    • plus_font

对应的位置如下图所示:

  • menubar/tool : 顶部菜单的工具菜单
    • shortcuts
    • snippets
    • ext_settings

对应的位置如下图所示:

扩展点 - 图5

  • menubar/help : 顶部菜单的帮助菜单
    • documents
    • license

对应的位置如下图所示:

when

when表达式用来动态的判断某个条件是否满足(即表达式的运算结果是true或者false),目前用于控制一个菜单是否显示。目前支持的表达式运算符如下:

操作符 描述 例子
== 相等 langId == 'javascript'
!= 不相等 langId != 'html'
&& 并且 explorerResourceCount == 1 && explorerResourceIsFolder
|| 或者 explorerResourceIsFolder || explorerResourceIsWorkspaceFolder
! !explorerResourceIsFolder

目前HBuilderX内置变量列表如下: