Spaces:
Sleeping
Sleeping
import YAML from 'yaml' | |
import fs from 'node:fs' | |
import chokidar from 'chokidar' | |
/** 配置文件 */ | |
class Cfg { | |
/** 初始化配置 */ | |
constructor () { | |
let file = 'config/config.yaml' | |
let fileDef = 'config/default_config.yaml' | |
if (!fs.existsSync(file)) { | |
fs.copyFileSync(fileDef, file) | |
} | |
if (!fs.existsSync('data')) fs.mkdirSync('data') | |
this.config = {} | |
} | |
get http () { | |
return this.getConfig('config') | |
} | |
get http_listen () { | |
return [this.http.HTTPS ? this.http.HTTPS_PORT : this.http.HTTP_PORT, this.http.HOST] | |
} | |
https_address (originalUrl, hostname) { | |
let Url = new URL(originalUrl, `https://${hostname}`) | |
Url.port = this.http.HTTPS_PORT | |
return Url.href | |
} | |
get redis () { | |
return this.getConfig('redis') | |
} | |
get cert() { | |
return { | |
cert: fs.readFileSync(this.http.CA_CERTIFICATE, 'utf8'), | |
key: fs.readFileSync(this.http.CA_PRIVATE, 'utf8') | |
} | |
} | |
/** package.json */ | |
get package () { | |
if (this._package) return this._package | |
this._package = JSON.parse(fs.readFileSync('package.json', 'utf8')) | |
return this._package | |
} | |
/** 用户配置 */ | |
getConfig (name) { | |
return this.getYaml(name) | |
} | |
/** | |
* 获取配置yaml | |
* @param type 默认跑配置-defSet,用户配置-config | |
* @param name 名称 | |
*/ | |
getYaml (name) { | |
let file = `config/${name}.yaml` | |
if (this.config[name]) return this.config[name] | |
this.config[name] = YAML.parse( | |
fs.readFileSync(file, 'utf8') | |
) | |
return this.config[name] | |
} | |
} | |
export default new Cfg() | |