配置
一个扩展可以提供扩展特定的设置。
在 Manifest 清单中定义
要在 package.json 中定义设置,你需要添加 contributes.configuration 字段。configuration 字段是一个包含配置设置的对象。
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)