配置系统

在编写扩展的时候,有可能需要保存一些配置,并提供一些配置让用户进行自定义设置。 所以编辑器内就提供了一套配置管理机制。

配置类型

编辑器里的配置分成了两种:

  1. 编辑器设置
  2. 项目设置

编辑器设置

存放一些编辑器相关的功能设置。这部分也是编辑器的主要配置。

编辑器设置分成三个层级,优先级从高到低:

  1. local -> global -> default

项目设置

存放一些和项目相关的配置,这些配置允许,并且需要在项目间共享。

  1. local -> default

注册配置

  1. {
  2. "name": "hello-world",
  3. "contributions": {
  4. "profile": {
  5. "editor": {
  6. "test.a": {
  7. "default": 0,
  8. "message": "editorTestAChanged",
  9. "label": "测试编辑器配置"
  10. }
  11. },
  12. "project": {
  13. "test.a": {
  14. "default": 1,
  15. "message": "projectTestAChanged",
  16. "label": "测试项目配置"
  17. }
  18. }
  19. }
  20. },
  21. }
  1. interface ProfileInfo {
  2. editor: { [ key: string ]: ProfileItem };
  3. project: { [ key: string ]: ProfileItem };
  4. }
  5. interface ProfileItem {
  6. // 配置的默认数据
  7. default: any;
  8. // 配置更改后,会自动发送这个消息进行通知
  9. message: string;
  10. // 简单的描述配置信息的作用,支持 i18n:key 语法
  11. label: string;
  12. }

contributions.profile 分成 editor 和 project 两种配置,这两中配置的定义都是 object 对象。 object 的 key 为配置的 key,value 则是描述这个配置的基本信息。

default

类型 {any} 可选

配置的默认值。可以是任何类型。

message

类型 {string} 可选

当消息修改后,会触发定义的消息。用于配置改变的时候动态更新一些数据。

label

类型 {string} 可选

简单的描述这个配置。在可以显示配置的地方,可能会显示这个描述。支持 i18n:key 格式

读取配置

读取编辑器配置

  1. const packageJSON = require('./package.json');
  2. // await Editor.Profile.getConfig(pkgName, key, protocol);
  3. await Editor.Profile.getConfig(packageJSON.name, 'test.a'); // 0
  4. await Editor.Profile.getConfig(packageJSON.name, 'test.a', 'local'); // undefined
  5. await Editor.Profile.getConfig(packageJSON.name, 'test.a', 'global'); // undefined

读取项目配置

  1. const packageJSON = require('./package.json');
  2. // await Editor.Profile.getConfig(pkgName, key, protocol);
  3. await Editor.Profile.getProject(packageJSON.name, 'test.a'); // 1
  4. await Editor.Profile.getProject(packageJSON.name, 'test.a', 'project'); // undefined

配置存放的地方

编辑器配置存放的地方

层级路径
local{projectPath}/profiles/v2/extensions/{extensionName}.json
global(mac)Users/{name}/.CocosCreator/profiles/v2/extensions/{extensionName}.json
global(window)c/Users/{name}/.CocosCreator/profiles/v2/extensions/{extensionName}.json
default{extensionPath}/package.json

项目配置存放的地方

层级路径
local{projectPath}/settings/v2/extensions/{extensionName}.json
default{extensionPath}/package.json