Spaces:
Running
Running
import path from 'path'; | |
import fs from 'fs-extra'; | |
import yaml from 'yaml'; | |
import _ from 'lodash'; | |
import environment from '../environment.ts'; | |
const CONFIG_PATH = path.join(path.resolve(), 'configs/', environment.env, "/system.yml"); | |
/** | |
* 系统配置 | |
*/ | |
export class SystemConfig { | |
/** 是否开启请求日志 */ | |
requestLog: boolean; | |
/** 临时目录路径 */ | |
tmpDir: string; | |
/** 日志目录路径 */ | |
logDir: string; | |
/** 日志写入间隔(毫秒) */ | |
logWriteInterval: number; | |
/** 日志文件有效期(毫秒) */ | |
logFileExpires: number; | |
/** 公共目录路径 */ | |
publicDir: string; | |
/** 临时文件有效期(毫秒) */ | |
tmpFileExpires: number; | |
/** 请求体配置 */ | |
requestBody: any; | |
/** 是否调试模式 */ | |
debug: boolean; | |
constructor(options?: any) { | |
const { requestLog, tmpDir, logDir, logWriteInterval, logFileExpires, publicDir, tmpFileExpires, requestBody, debug } = options || {}; | |
this.requestLog = _.defaultTo(requestLog, false); | |
this.tmpDir = _.defaultTo(tmpDir, './tmp'); | |
this.logDir = _.defaultTo(logDir, './logs'); | |
this.logWriteInterval = _.defaultTo(logWriteInterval, 200); | |
this.logFileExpires = _.defaultTo(logFileExpires, 2626560000); | |
this.publicDir = _.defaultTo(publicDir, './public'); | |
this.tmpFileExpires = _.defaultTo(tmpFileExpires, 86400000); | |
this.requestBody = Object.assign(requestBody || {}, { | |
enableTypes: ['json', 'form', 'text', 'xml'], | |
encoding: 'utf-8', | |
formLimit: '100mb', | |
jsonLimit: '100mb', | |
textLimit: '100mb', | |
xmlLimit: '100mb', | |
formidable: { | |
maxFileSize: '100mb' | |
}, | |
multipart: true, | |
parsedMethods: ['POST', 'PUT', 'PATCH'] | |
}); | |
this.debug = _.defaultTo(debug, true); | |
} | |
get rootDirPath() { | |
return path.resolve(); | |
} | |
get tmpDirPath() { | |
return path.resolve(this.tmpDir); | |
} | |
get logDirPath() { | |
return path.resolve(this.logDir); | |
} | |
get publicDirPath() { | |
return path.resolve(this.publicDir); | |
} | |
static load() { | |
if (!fs.pathExistsSync(CONFIG_PATH)) return new SystemConfig(); | |
const data = yaml.parse(fs.readFileSync(CONFIG_PATH).toString()); | |
return new SystemConfig(data); | |
} | |
} | |
export default SystemConfig.load(); |