import dotenv from 'dotenv' import { writeFileSync } from 'fs' // 加载 .env 文件 先找.local 然后对应环境文件,最后找默认的,左边的优先级最高 const NODE_ENV = process.env.NODE_ENV dotenv.config({ path: NODE_ENV ? [`.env.${NODE_ENV}.local`, '.env.' + NODE_ENV, '.env'] : '.env' }) const { VITE_SERVER_ORIGIN, VITE_NGINX_PROXY, VITE_API_SUFFIX_URL, VITE_RULE_SERVER_URL, VITE_MEDIA_SERVER_URL } = process.env const baseUrl = VITE_SERVER_ORIGIN + VITE_NGINX_PROXY + VITE_API_SUFFIX_URL const configFile = './public/config.js' const configJson = { topo: { server: baseUrl, imgServer: VITE_SERVER_ORIGIN + VITE_NGINX_PROXY, }, screen: { server: baseUrl, imgServer: VITE_SERVER_ORIGIN + VITE_NGINX_PROXY, }, rule: { server: VITE_RULE_SERVER_URL, iotServer: baseUrl, }, designer: { server: baseUrl, }, media: VITE_MEDIA_SERVER_URL, } // 大屏项目会存在配置找不到的情况,增加同步请求的 js 配置文件,避免异步请求延迟导致的异常 const configJs = `window.allEnv = ${JSON.stringify(configJson, null, 2)}` // 文件写入 try { // 将.env 中的值进行赋值之后写入 config.json writeFileSync(configFile, configJs, { flag: 'w+', encoding: 'utf-8' }) console.log(`-> 更新配置成功`) console.log(configJson) console.log(`===============================================================`) } catch (err) { console.error(`-> 更新配置成功: `) console.error(err) }