import { fileURLToPath, URL } from 'node:url' import vue from '@vitejs/plugin-vue' import { defineConfig, loadEnv } from 'vite' function resolveBuildId() { const configured = process.env.BUILD_ID?.trim().replace(/[^a-zA-Z0-9_-]/g, '') return configured || Date.now().toString(36) } // https://vite.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), '') const buildId = resolveBuildId() const apiProxyTarget = process.env.VITE_API_PROXY_TARGET?.trim() || env.VITE_API_PROXY_TARGET?.trim() || 'http://127.0.0.1:18080' return { plugins: [vue()], build: { rollupOptions: { output: { entryFileNames: `assets/[name]-${buildId}-[hash].js`, chunkFileNames: `assets/[name]-${buildId}-[hash].js`, assetFileNames: `assets/[name]-${buildId}-[hash][extname]`, }, }, }, server: { // The public HTTPS virtual host terminates TLS in Nginx and proxies to this dev server. // Permit only that configured hostname; keep Vite's DNS-rebinding protection enabled. allowedHosts: ['fn.xianyi.de'], proxy: { '/api': { target: apiProxyTarget, changeOrigin: true, secure: true, }, }, }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, } })