@msom/xbuild
Version:
@msom/xbuild
33 lines (27 loc) • 761 B
text/typescript
import { XBuildMode } from "../core";
const XBUILD_ENV = "XBUILD_ENV";
class XBuildENV {
private declare envKey: string | symbol;
constructor(envKey: string | symbol) {
this.envKey = envKey;
}
get env(): XBuildMode {
return Reflect.get(process.env, this.envKey, process.env);
}
to(mode: XBuildMode) {
Object.assign(process.env, { [this.envKey]: mode });
}
reset() {
Reflect.deleteProperty(process.env, this.envKey);
}
}
let inst: XBuildENV | undefined;
const _XbuildEnv = new new Proxy(XBuildENV, {
construct(target, argArray: string[], newTarget) {
if (!inst) {
inst = new XBuildENV(argArray[0]);
}
return inst;
},
})(XBUILD_ENV);
export { _XbuildEnv as XBuildENV };