dsk / src /lib /configs /system-config.ts
ffreemt
Update local files instead of git clone
813eca2
raw
history blame
2.47 kB
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();