Skip to content

配置

一个扩展可以提供扩展特定的设置。

在 Manifest 清单中定义

要在 package.json 中定义设置,你需要添加 contributes.configuration 字段。configuration 字段是一个包含配置设置的对象。

package.json
json
{
  "contributes": {
    "configuration": {
      "title": "My Extension",
      "properties": {
        "myExtension.enable": {
          "type": "boolean",
          "default": true,
          "description": "启用 My Extension"
        },
        "myExtension.greeting.message": {
          "type": ["string", "null"],
          "default": "Hello!",
          "description": "问候消息。设置为 null 以禁用"
        }
      }
    }
  }
}

访问官方文档获取更多信息。

在扩展中使用

要在扩展中使用这些设置,你可以使用 defineConfig 函数来定义配置。以下示例对应上述配置。

ts
import { 
defineConfig
,
watchEffect
} from 'reactive-vscode'
const
config
=
defineConfig
<{
enabled
: boolean
greeting
: {
// Nested configurations are also supported
message
: string | null
} }>('your-extension-id')
console
.
log
(
config
.
greeting
.
message
) // read
config
.
greeting
.
message
= 'Hi!' // write
config
.
greeting
= {
message
: 'Hello!' } // write nested object
watchEffect
(() => {
console
.
log
('Enabled:',
config
.
enabled
) // react to changes
})

访问官方文档获取关于其余选项的更多信息。

配合 vscode-ext-gen 使用

你还可以使用 vscode-ext-gen 来生成配置类型。例如:

ts
// ./generated-meta.ts is generated by vscode-ext-gen

import type { NestedScopedConfigs } from './generated-meta'
import { 
defineConfig
} from 'reactive-vscode'
import {
scopedConfigs
} from './generated-meta'
const
config
=
defineConfig
<NestedScopedConfigs>(
scopedConfigs
.
scope
)