import { config } from 'dotenv'; import path from 'path'; // 加载环境变量 config({ path: path.resolve(process.cwd(), '.env') }); console.log('[NODE_ENV]:', process.env.NODE_ENV); // 基础配置 const baseConfig = { NODE_ENV: process.env.NODE_ENV || 'development', server: { port: process.env.PORT || 9000, host: process.env.HOST || 'localhost', backlog: process.env.BACKLOG || 511, }, logger: { level: process.env.LOG_LEVEL || 'trace', filePath: process.env.LOG_FILE || '../logs/app.log', console: false, }, pluginOptions: { name: process.env.PLUGIN_NAME || 'default', prefix: process.env.API_PREFIX || '/api', }, db: { host: process.env.DB_HOST || '127.0.0.1', port: process.env.DB_PORT || 3306, user: process.env.DB_USER || 'root', password: process.env.DB_PASSWORD, database: process.env.DB_NAME || 'yuheng', ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: true } : null, }, }; // 环境特定配置 const envConfig = { production: { server: { host: '0.0.0.0', }, logger: { level: 'warn', }, }, development: { logger: { level: 'trace', console: true, }, }, }; // 使用深度合并代替展开操作符 function deepMerge(target, source) { for (const key of Object.keys(source)) { if (source[key] instanceof Object && key in target) { Object.assign(source[key], deepMerge(target[key], source[key])); } } return Object.assign({}, target, source); } export default deepMerge(baseConfig, envConfig[process.env.NODE_ENV] || envConfig.development);