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

(cherry picked from commit bcc4773fbfc3dd1b7a24655bc731be830ad6d72d)
This commit is contained in:
周旭 2021-06-30 00:49:19 +08:00 committed by GitHub
parent cdb10cc4ac
commit 95c16a5d26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -39,22 +39,37 @@ export function wrapperEnv(envConf: Recordable): ViteEnv {
return ret;
}
/**
*
*/
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
* @param match prefix
* @param confFiles ext
*/
export function getEnvConfig(match = 'VITE_GLOB_', confFiles = ['.env', '.env.production']) {
export function getEnvConfig(match = 'VITE_GLOB_', confFiles = getConfFiles()) {
let envConfig = {};
confFiles.forEach((item) => {
try {
const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item)));
envConfig = { ...envConfig, ...env };
} catch (error) {}
} catch (e) {
console.error(`Error in parsing ${item}`, e);
}
});
const reg = new RegExp(`^(${match})`);
Object.keys(envConfig).forEach((key) => {
const reg = new RegExp(`^(${match})`);
if (!reg.test(key)) {
Reflect.deleteProperty(envConfig, key);
}