| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { defineConfig, loadEnv } from 'vite'
- import vue from '@vitejs/plugin-vue'
- import { resolve } from 'node:path'
- function parsePort(raw: string | undefined, fallback: number): number {
- const n = Number.parseInt(String(raw ?? '').trim(), 10)
- if (!Number.isFinite(n) || n < 1 || n > 65535) return fallback
- return n
- }
- export default defineConfig(({ mode }) => {
- const env = loadEnv(mode, process.cwd(), '')
- const backendPort = parsePort(
- process.env.BACKEND_PORT || env.BACKEND_PORT || env.VITE_BACKEND_PORT,
- 8000,
- )
- const frontendPort = parsePort(
- process.env.FRONTEND_PORT || env.FRONTEND_PORT || env.VITE_DEV_PORT,
- 5173,
- )
- const backend = `http://127.0.0.1:${backendPort}`
- return {
- plugins: [vue()],
- resolve: { alias: { '@': resolve(process.cwd(), 'src') } },
- server: {
- host: '127.0.0.1',
- port: frontendPort,
- strictPort: true,
- open: '/',
- proxy: {
- '/api': { target: backend, changeOrigin: true, timeout: 420000, proxyTimeout: 420000 },
- '/health': { target: backend, changeOrigin: true, timeout: 420000, proxyTimeout: 420000 },
- },
- },
- build: {
- rollupOptions: {
- output: {
- manualChunks(id) {
- if (id.includes('node_modules/ant-design-vue')) {
- if (id.includes('/vc-table/') || id.includes('/table/')) return 'antd-table'
- if (id.includes('/vc-select/') || id.includes('/select/')) return 'antd-select'
- if (id.includes('/vc-picker/') || id.includes('/date-picker/')) return 'antd-picker'
- return 'antd'
- }
- if (id.includes('node_modules/katex')) return 'katex'
- },
- },
- },
- },
- }
- })
|