1.不同的生产环境部署

解决不同生产环境的上线地址问题

1.根文件html文件
<script src="%VITE_APP_BASE%config.js"></script>

2.所有的这个.env环境变量文件增加属性
VITE_APP_BASE = "/data-registry/"

3.viteconfig文件
import { defineConfig, loadEnv } from 'vite';
import { fileURLToPath, URL } from 'node:url';
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import VueDevTools from 'vite-plugin-vue-devtools';
export default ({ mode }: any) => {
// 根据当前工作目录中的 `mode` 加载 .env 文件
// 设置第三个参数为 '' 来加载所有环境变量,而不管是否有 `VITE_` 前缀。
const env = loadEnv(mode, process.cwd());
let baseVal = env.VITE_APP_BASE;
if (baseVal === '') {
baseVal = '/';
}
return defineConfig({
base: baseVal,
plugins: [vue(), VueDevTools()],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
css: {
preprocessorOptions: {
less: {
additionalData:
'@import "@/assets/styles/common.less";@import "@/assets/styles/new-variables.less";'
}
}
},
build: {
outDir: 'dist', // 这里配置打包输出的文件夹
sourcemap: true
}
});
};
4.package.json 文件
"build": "vite build",
"build-kaifa": "run-p \"build-only --mode kaifa {@}\" --",
"build-yanshi": "run-p \"build-only --mode yanshi {@}\" --",
"build-zhongdian": "run-p \"build-only --mode zhongdian {@}\" --",

2.前端项目生产环境变量

解决不同生产环境的差异性配置,例如在哪个环境需要做哪些事情

1.在public文件夹下面,新建一个config.js文件

window.AppConfig = {
ServerAddr: 'http://27.115.98.190:31060',
Header: 'http://',
Path: '',
CurrentEnv: 'dalian' //是否是大连环境 如果是就写 dalian 区别不同生成环境 yanshi 就是稳定环境 kaifa就是开发环境
};
2.配置该文件的变量类型,新建一个env.d.ts
declare global {
interface Window {
AppConfig: {
ServerAddr: string;
Header: string;
Path: string;
CurrentEnv:string;
};
}
interface ImportMetaEnv {
VITE_APP_VERSION: string;
VITE_API_BASE_URL: string;
}
}
3.项目中通过window.AppConfig.CurrentEnv进行访问
4.生产环境中,需要后端同时挂载配置该文件,否则不生效

3.前端项目生产环境变量

解决不同生产环境的照片显示,下载文件,内外网问题

1.新建一个文件,例如config.ts
// 获取服务器地址配置
function getServerUrl(): string {
const config = window.AppConfig;
const addr = window.location.host;

// 检查是否在生产环境且配置了 ServerAddr
if (import.meta.env.MODE === 'production' && config.ServerAddr !== '') {
return config.ServerAddr;
}

// 开发环境或生产环境未配置 ServerAddr 时使用 VITE_API_BASE_URL
const defaultBaseUrl = import.meta.env.VITE_API_BASE_URL;
if (defaultBaseUrl) {
return defaultBaseUrl;
}

// 如果以上都不适用,尝试使用 AppConfig 中的 Header, Path 和当前域名拼接(注意:这通常不是标准做法)
// 警告:这种拼接方式可能不正确,通常 URL 应该包括协议(如 http:// 或 https://)
// 这里假设 Header 是协议部分,如果不是,请根据实际情况调整
return `${config.Header || 'http://'}${addr}${config.Path || ''}`;
}

export default { getServerUrl };