1
0
Эх сурвалжийг харах

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

(cherry picked from commit bcc4773fbfc3dd1b7a24655bc731be830ad6d72d)
周旭 3 жил өмнө
parent
commit
95c16a5d26
1 өөрчлөгдсөн 19 нэмэгдсэн , 4 устгасан
  1. 19 4
      build/utils.ts

+ 19 - 4
build/utils.ts

@@ -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);
     }