@nexe/config-manager
Version:
Nexe Config Manager - A flexible configuration management solution with multiple sources and hot reload support
83 lines • 3.28 kB
JavaScript
;
// import { container } from 'tsyringe';
// import {
// ConfigManager,
// EnvironmentConfigSource,
// JsonConfigSource,
// RemoteApiConfigSource,
// YamlConfigSource,
// } from '..';
// import { ConsulConfigSource } from '../sources/consul-config-source';
// import { DatabaseConfig } from './database-config';
// /**
// * 配置系统使用示例
// */
// // eslint-disable-next-line @typescript-eslint/no-unused-vars
// async function configExample(): Promise<void> {
// // 创建配置管理器
// const configManager = new ConfigManager();
// // 添加多种配置源,按优先级顺序
// // 1. 环境变量(最高优先级)
// configManager.addSource(new EnvironmentConfigSource('APP_'), 100);
// // 2. Consul配置(高优先级)
// const consulConfig = new ConsulConfigSource({
// host: 'localhost',
// port: 8500,
// defaultKeyPrefix: 'myapp',
// });
// configManager.addSource(consulConfig, 80);
// // 3. 远程API配置
// const apiConfig = new RemoteApiConfigSource(
// 'https://config-api.example.com',
// { Authorization: 'Bearer your-token' },
// 60000, // 60秒轮询一次
// );
// configManager.addSource(apiConfig, 60);
// // 4. YAML本地配置(测试环境)
// const yamlConfig = new YamlConfigSource('./config/test.yaml', true);
// configManager.addSource(yamlConfig, 40);
// // 5. JSON本地配置(默认配置,最低优先级)
// const jsonConfig = new JsonConfigSource('./config/default.json');
// configManager.addSource(jsonConfig, 20);
// // 将配置管理器注册到容器
// container.registerInstance(ConfigManager, configManager);
// // 1. 获取单个配置值
// const serverPort = await configManager.get<number>('server.port', 3000);
// console.log(`服务器端口: ${serverPort}`);
// // 2. 获取强类型配置对象
// const dbConfig = await configManager.getConfig(DatabaseConfig);
// console.log(`数据库配置: ${JSON.stringify(dbConfig, null, 2)}`);
// // 3. 订阅配置变更
// configManager.subscribe<number>('server.maxConnections', (newValue) => {
// console.log(`最大连接数已更新: ${newValue}`);
// // 这里可以重新配置应用
// });
// // 4. 从容器中获取配置
// class DatabaseService {
// private dbConfig!: DatabaseConfig; // 使用!断言,因为会在init中初始化
// constructor() {
// // 从tsyringe容器获取配置管理器
// const configManager = container.resolve(ConfigManager);
// // 异步初始化
// this.init(configManager).catch(console.error);
// }
// private async init(configManager: ConfigManager): Promise<void> {
// // 获取强类型配置
// this.dbConfig = await configManager.getConfig(DatabaseConfig);
// // 使用配置连接数据库
// console.log(
// `连接数据库: ${this.dbConfig.host}:${this.dbConfig.port}/${this.dbConfig.database}`,
// );
// }
// }
// // 使用示例服务
// new DatabaseService();
// // 清理资源
// setTimeout(() => {
// consulConfig.dispose();
// apiConfig.dispose();
// yamlConfig.dispose();
// jsonConfig.dispose();
// }, 60000);
// }
//# sourceMappingURL=config-example.js.map