ConfigManager
配置管理器,支持多来源配置加载和合并。
创建 ConfigManager
import { ConfigManager } from 'claude-code-sdk-ts'
const config = new ConfigManager(initialConfig?: Partial<SDKConfig>)
方法
getConfig()
获取完整配置的拷贝:
const cfg = config.getConfig()
update(partial)
更新配置(深合并):
config.update({
llm: { provider: 'vertex', projectId: 'my-project' },
})
loadFromFile(path)
从 JSON 文件加载配置:
config.loadFromFile('./settings.json')
saveToFile(path)
保存配置到 JSON 文件(自动过滤默认值):
config.saveToFile('./settings.json')
loadFromEnv()
从环境变量加载配置:
const envConfig = config.loadFromEnv()
mergeFromEnv()
将环境变量合并到当前配置:
config.mergeFromEnv()
loadFromSources(sources)
按优先级从多个来源加载:
config.loadFromSources({
filePath: './settings.json',
env: process.env,
cliArgs: { permissionMode: 'bypass' },
})
validate()
使用内置规则验证配置(兼容旧版):
const result = config.validate()
console.log(result.errors) // string[]
validateZod()
使用 Zod schema 验证配置,返回结构化错误:
const result = config.validateZod()
if (!result.valid) {
result.errors.forEach(e => {
console.log(`${e.path}: ${e.message} (期望: ${e.expected}, 实际: ${e.actual})`)
})
}
// "llm.apiKey: Required (期望: string, 实际: undefined)"
onDidChange(callback)
监听配置变更事件:
const unsubscribe = config.onDidChange((event) => {
console.log(`配置变更: ${event.key} = ${event.newValue}`)
})
watch(path)
监听配置文件的外部修改(热更新):
config.watch('./settings.json')
unwatch()
停止监听配置文件。