Unverified 提交 95c16a5d 作者: 周旭 提交者: GitHub

fix: support various vite modes of build, not just production (#832)

(cherry picked from commit bcc4773fbfc3dd1b7a24655bc731be830ad6d72d)
上级 cdb10cc4
...@@ -40,21 +40,36 @@ export function wrapperEnv(envConf: Recordable): ViteEnv { ...@@ -40,21 +40,36 @@ export function wrapperEnv(envConf: Recordable): ViteEnv {
} }
/** /**
* 获取当前环境下生效的配置文件名
*/
function getConfFiles() {
const script = process.env.npm_lifecycle_script;
const reg = new RegExp('--mode ([a-z]+) ');
const result = reg.exec(script as string) as any;
if (result) {
const mode = result[1] as string;
return ['.env', `.env.${mode}`];
}
return ['.env', '.env.production'];
}
/**
* Get the environment variables starting with the specified prefix * Get the environment variables starting with the specified prefix
* @param match prefix * @param match prefix
* @param confFiles ext * @param confFiles ext
*/ */
export function getEnvConfig(match = 'VITE_GLOB_', confFiles = ['.env', '.env.production']) { export function getEnvConfig(match = 'VITE_GLOB_', confFiles = getConfFiles()) {
let envConfig = {}; let envConfig = {};
confFiles.forEach((item) => { confFiles.forEach((item) => {
try { try {
const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item))); const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item)));
envConfig = { ...envConfig, ...env }; envConfig = { ...envConfig, ...env };
} catch (error) {} } catch (e) {
console.error(`Error in parsing ${item}`, e);
}
}); });
Object.keys(envConfig).forEach((key) => {
const reg = new RegExp(`^(${match})`); const reg = new RegExp(`^(${match})`);
Object.keys(envConfig).forEach((key) => {
if (!reg.test(key)) { if (!reg.test(key)) {
Reflect.deleteProperty(envConfig, key); Reflect.deleteProperty(envConfig, key);
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论