main.ts
import '~/util/openInEditorConfig'
openInEditorConfig.ts
import { warpperEnv } from "~/util/build";
let envSettings = warpperEnv()
if (process.env.NODE_ENV === 'development') {
let host = window.location.host
window.VUE_DEVTOOLS_CONFIG = {
openInEditorHost: `http://${host}/${envSettings.VITE_PUBLIC_PATH}/`
}
}
src\util\build\index.ts
/**
* 默认环境配置, 具体配置在 .env.xxx文件中修改
*/
const settings: EnvSettings = {
VITE_PORT: 5003,
VITE_PUBLIC_PATH: "/projexec",
VITE_ONLY_OFFICE_HOST: 'http://192.168.101.88:1080',
VITE_DOCUMENT_SERVER_HOST: 'http://localhost:9540',
VITE_DOCUMENT_SERVER_VUE_HOST: 'http://localhost:8848',
VITE_FILE_READY_ADDRESS: "http://xxxxxxxxxxxxx.aliyuncs.com/"
};
/**
* 包装环境配置,用于将字符串格式化为boolean或number类型
* @param envConf 环境配置
* @returns
*/
const warpperEnv = (envConf?: Record<string, any>): EnvSettings => {
let ret = { ...settings, };
if (!envConf) envConf = loadEnv()
for (const envName of Object.keys(envConf)) {
const envValue = envConf[envName]
if (!envValue || typeof (envValue) !== 'string') {
continue
}
let value: any = envValue.replace(/\\n/g, "\n");
if (value === "true") {
value = true
} else if (value === "false") {
value = false;
}
if (envName === "VITE_PORT") {
value = Number(value);
}
ret[envName] = value;
}
return ret;
};
/**
* 加载环境变量 import.meta.env
* @returns
*/
const loadEnv = () => {
/**
* development 开发环境从import.meta.env获取环境变量
* 非development 开发环境则从config.js获取环境变量
*/
// 在生产环境中,这些环境变量会在构建时被静态替换,因此,在引用它们时请使用完全静态的字符串。动态的 key 将无法生效。例如,动态 key 取值 import.meta.env[key] 是无效的。
// https://cn.vitejs.dev/guide/env-and-mode.html#env-variables
const env = import.meta.env;
if (env.MODE === 'development') {
return env;
}
Object.assign(env, window.appConfig)
return env;
};
export { settings, warpperEnv };
public\config.js-test
window.appConfig = {
// VITE_PORT:'80',
VITE_PUBLIC_PATH:'projexec',
VITE_ONLY_OFFICE_HOST:'http://192.168.101.88:1080',
VITE_DOCUMENT_SERVER_HOST:'http://192.168.101.80:55000/document',
VITE_DOCUMENT_SERVER_VUE_HOST:'http://192.168.101.80:55000/document',
VITE_FILE_READY_ADDRESS: "http://xxxxxxxxxxxxxx.aliyuncs.com/"
}