配置系统
配置类型有两种:
- 编辑器配置(editor)
- 项目配置(project)
编辑器配置用于存放一些编辑器相关的用户设置和数据,分成三个优先级,从高到低今次为:
在进行配置数据获取时,会优先采用 中的配置项,若 local
中无对应配置项,则会采用 global
中的配置项,若 global
中也找不到对应配置项,则会采用默认的 default
配置。
项目配置
项目配置用于存放一些和项目相关的用户设置和数据,分成两优先级,从高到低为:
local -> default
若要使用配置系统,需要在扩展定义文件 package.json
的 contributions
字段中定义 profile
相关信息,如下所示:
{
"contributions": {
"profile": {
"editor": {
"test.a": {
"default": 0,
"message": "editorTestAChanged",
"label": "测试编辑器配置"
}
"project": {
"test.a": {
"default": 1,
"message": "projectTestAChanged",
"label": "测试项目配置"
}
}
},
}
contributions.profile 相关的字段释义如下:
editor
:{} - 编辑器配置project
:{} - 项目配置test.a
:{} - key 为 test.a 的配置项default
:any - 此配置项的默认值,可选参数message
:string - 此配置项被修改时会触发此消息,可选参数label
:string - 在可以显示配置的地方,可能会显示这个描述。支持 i18n:key 格式,可选参数
profile
相关的 TypeScript 接口定义如下:
import packageJSON from '../package.json';
Editor.Profile.getConfig
最后一个参数为空的情况,会进行 匹配。
await Editor.Profile.getConfig(packageJSON.name, 'test.a'); // 0
await Editor.Profile.getConfig(packageJSON.name, 'test.a', 'local'); // undefined
await Editor.Profile.getConfig(packageJSON.name, 'test.a', 'global'); // undefined
修改编辑器配置
用以下代码修改配置后再调用 getConfig
可以看到对应变化。
Editor.Profile.getProject
最后一个参数为空的情况,会进行 匹配。
若指定了获取位置(local
、default
二者之一),则会返回对应的值。如下所示,获取到的 local
为 undefined
是因为未对其进行设置。
await Editor.Profile.getProject(packageJSON.name, 'test.a'); // 1
await Editor.Profile.getProject(packageJSON.name, 'test.a', 'local'); // undefined
修改项目配置
用以下代码修改配置后再调用 getProject
可以看到对应变化。
await Editor.Profile.setProject(packageJSON.name, 'test.a', 1);
await Editor.Profile.setProject(packageJSON.name, 'test.a', 'local', 2);
项目配置存储路径
层级 | 路径 |
---|---|
local | |
default | {extensionPath}/package.json |