59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
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'
|
|
}
|
|
}
|
|
|
|
// 环境特定配置
|
|
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
|
|
) |