配置系统

    配置类型有两种:

    1. 编辑器配置(editor)
    2. 项目配置(project)

    编辑器配置用于存放一些编辑器相关的用户设置和数据,分成三个优先级,从高到低今次为:

    在进行配置数据获取时,会优先采用 中的配置项,若 local 中无对应配置项,则会采用 global 中的配置项,若 global 中也找不到对应配置项,则会采用默认的 default 配置。

    项目配置

    项目配置用于存放一些和项目相关的用户设置和数据,分成两优先级,从高到低为:

    1. local -> default

    若要使用配置系统,需要在扩展定义文件 package.jsoncontributions 字段中定义 profile 相关信息,如下所示:

    1. {
    2. "contributions": {
    3. "profile": {
    4. "editor": {
    5. "test.a": {
    6. "default": 0,
    7. "message": "editorTestAChanged",
    8. "label": "测试编辑器配置"
    9. }
    10. "project": {
    11. "test.a": {
    12. "default": 1,
    13. "message": "projectTestAChanged",
    14. "label": "测试项目配置"
    15. }
    16. }
    17. },
    18. }

    contributions.profile 相关的字段释义如下:

    • editor:{} - 编辑器配置
    • project:{} - 项目配置
    • test.a:{} - key 为 test.a 的配置项
    • default:any - 此配置项的默认值,可选参数
    • message:string - 此配置项被修改时会触发此消息,可选参数
    • label:string - 在可以显示配置的地方,可能会显示这个描述。支持 i18n:key 格式,可选参数

    profile 相关的 TypeScript 接口定义如下:

    1. import packageJSON from '../package.json';

    Editor.Profile.getConfig 最后一个参数为空的情况,会进行 匹配。

    1. await Editor.Profile.getConfig(packageJSON.name, 'test.a'); // 0
    2. await Editor.Profile.getConfig(packageJSON.name, 'test.a', 'local'); // undefined
    3. await Editor.Profile.getConfig(packageJSON.name, 'test.a', 'global'); // undefined

    修改编辑器配置

    用以下代码修改配置后再调用 getConfig 可以看到对应变化。

    Editor.Profile.getProject 最后一个参数为空的情况,会进行 匹配。

    若指定了获取位置(localdefault 二者之一),则会返回对应的值。如下所示,获取到的 localundefined 是因为未对其进行设置。

    1. await Editor.Profile.getProject(packageJSON.name, 'test.a'); // 1
    2. await Editor.Profile.getProject(packageJSON.name, 'test.a', 'local'); // undefined

    修改项目配置

    用以下代码修改配置后再调用 getProject 可以看到对应变化。

    1. await Editor.Profile.setProject(packageJSON.name, 'test.a', 1);
    2. await Editor.Profile.setProject(packageJSON.name, 'test.a', 'local', 2);

    项目配置存储路径

    层级路径
    local
    default{extensionPath}/package.json