UNPKG

@nexe/config-manager

Version:

Nexe Config Manager - A flexible configuration management solution with multiple sources and hot reload support

83 lines 3.28 kB
"use strict"; // 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