build(frontend): vite 加载开发环境变量

- 使用 loadEnv 读取 VITE_DEV_PROXY_TARGET/VITE_DEV_PORT
- 注入 public settings 与 dev proxy 使用同源后端地址
This commit is contained in:
墨颜
2026-01-20 15:04:18 +08:00
parent dd8d5e2c42
commit 88b6358472

View File

@@ -1,4 +1,4 @@
import { defineConfig, Plugin } from 'vite' import { defineConfig, loadEnv, Plugin } from 'vite'
import vue from '@vitejs/plugin-vue' import vue from '@vitejs/plugin-vue'
import checker from 'vite-plugin-checker' import checker from 'vite-plugin-checker'
import { resolve } from 'path' import { resolve } from 'path'
@@ -7,9 +7,7 @@ import { resolve } from 'path'
* Vite 插件:开发模式下注入公开配置到 index.html * Vite 插件:开发模式下注入公开配置到 index.html
* 与生产模式的后端注入行为保持一致,消除闪烁 * 与生产模式的后端注入行为保持一致,消除闪烁
*/ */
function injectPublicSettings(): Plugin { function injectPublicSettings(backendUrl: string): Plugin {
const backendUrl = process.env.VITE_DEV_PROXY_TARGET || 'http://localhost:8080'
return { return {
name: 'inject-public-settings', name: 'inject-public-settings',
transformIndexHtml: { transformIndexHtml: {
@@ -35,15 +33,21 @@ function injectPublicSettings(): Plugin {
} }
} }
export default defineConfig({ export default defineConfig(({ mode }) => {
plugins: [ // 加载环境变量
vue(), const env = loadEnv(mode, process.cwd(), '')
checker({ const backendUrl = env.VITE_DEV_PROXY_TARGET || 'http://localhost:8080'
typescript: true, const devPort = Number(env.VITE_DEV_PORT || 3000)
vueTsc: true
}), return {
injectPublicSettings() plugins: [
], vue(),
checker({
typescript: true,
vueTsc: true
}),
injectPublicSettings(backendUrl)
],
resolve: { resolve: {
alias: { alias: {
'@': resolve(__dirname, 'src'), '@': resolve(__dirname, 'src'),
@@ -102,17 +106,18 @@ export default defineConfig({
} }
} }
}, },
server: { server: {
host: '0.0.0.0', host: '0.0.0.0',
port: Number(process.env.VITE_DEV_PORT || 3000), port: devPort,
proxy: { proxy: {
'/api': { '/api': {
target: process.env.VITE_DEV_PROXY_TARGET || 'http://localhost:8080', target: backendUrl,
changeOrigin: true changeOrigin: true
}, },
'/setup': { '/setup': {
target: process.env.VITE_DEV_PROXY_TARGET || 'http://localhost:8080', target: backendUrl,
changeOrigin: true changeOrigin: true
}
} }
} }
} }