提交 | 用户 | age
2f6253 1 import fs from 'fs';
bb3b8f 2 import path from 'path';
2f6253 3 import dotenv from 'dotenv';
bb3b8f 4
99ac30 5 export function isDevFn(mode: string): boolean {
bd7b53 6   return mode === 'development';
2f6253 7 }
8
99ac30 9 export function isProdFn(mode: string): boolean {
bd7b53 10   return mode === 'production';
2f6253 11 }
12
2f1fbf 13 /**
V 14  * Whether to generate package preview
15  */
2f6253 16 export function isReportMode(): boolean {
17   return process.env.REPORT === 'true';
18 }
2f1fbf 19
V 20 // Read all environment variable configuration files to process.env
8a9ca4 21 export function wrapperEnv(envConf: Recordable): ViteEnv {
2f6253 22   const ret: any = {};
23
bd7b53 24   for (const envName of Object.keys(envConf)) {
V 25     let realName = envConf[envName].replace(/\\n/g, '\n');
e8aede 26     realName = realName === 'true' ? true : realName === 'false' ? false : realName;
8a9ca4 27
e8aede 28     if (envName === 'VITE_PORT') {
B 29       realName = Number(realName);
30     }
31     if (envName === 'VITE_PROXY') {
32       try {
33         realName = JSON.parse(realName);
34       } catch (error) {}
35     }
2f6253 36     ret[envName] = realName;
37     process.env[envName] = realName;
38   }
39   return ret;
40 }
bb3b8f 41
2f1fbf 42 /**
V 43  * Get the environment variables starting with the specified prefix
44  * @param match prefix
45  * @param confFiles ext
46  */
bb3b8f 47 export function getEnvConfig(match = 'VITE_GLOB_', confFiles = ['.env', '.env.production']) {
N 48   let envConfig = {};
49   confFiles.forEach((item) => {
50     try {
51       const env = dotenv.parse(fs.readFileSync(path.resolve(process.cwd(), item)));
52       envConfig = { ...envConfig, ...env };
53     } catch (error) {}
54   });
8a9ca4 55
bb3b8f 56   Object.keys(envConfig).forEach((key) => {
N 57     const reg = new RegExp(`^(${match})`);
58     if (!reg.test(key)) {
59       Reflect.deleteProperty(envConfig, key);
60     }
61   });
62   return envConfig;
63 }
64
2f1fbf 65 /**
V 66  * Get user root directory
67  * @param dir file path
68  */
8a9ca4 69 export function getRootPath(...dir: string[]) {
bb3b8f 70   return path.resolve(process.cwd(), ...dir);
N 71 }