2025-10-21 16:50:33 +08:00
|
|
|
|
import { defineConfig } from 'vite'
|
|
|
|
|
|
import vue from '@vitejs/plugin-vue'
|
|
|
|
|
|
import { resolve } from 'path'
|
|
|
|
|
|
|
|
|
|
|
|
export default defineConfig({
|
|
|
|
|
|
plugins: [vue()],
|
|
|
|
|
|
resolve: {
|
|
|
|
|
|
alias: {
|
|
|
|
|
|
'@': resolve(__dirname, 'src')
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2025-11-13 17:01:39 +08:00
|
|
|
|
// 生产/开发环境配置
|
|
|
|
|
|
base: process.env.NODE_ENV === 'production' ? '/' : '/',
|
|
|
|
|
|
|
|
|
|
|
|
// 开发服务器配置
|
2025-10-21 16:50:33 +08:00
|
|
|
|
server: {
|
2025-11-13 17:01:39 +08:00
|
|
|
|
port: 8081,
|
2025-10-23 17:50:12 +08:00
|
|
|
|
host: '0.0.0.0', // 允许外部访问
|
|
|
|
|
|
allowedHosts: true, // 允许所有主机访问
|
2025-10-21 16:50:33 +08:00
|
|
|
|
proxy: {
|
|
|
|
|
|
'/api': {
|
2025-11-13 17:01:39 +08:00
|
|
|
|
// 开发时代理到本地后端(统一为 localhost:8080)
|
|
|
|
|
|
target: process.env.VITE_APP_API_URL || 'http://localhost:8080',
|
2025-10-21 16:50:33 +08:00
|
|
|
|
changeOrigin: true,
|
|
|
|
|
|
secure: false,
|
2025-11-13 17:01:39 +08:00
|
|
|
|
// 后端服务器路径已经包含 /api,所以不需要 rewrite
|
|
|
|
|
|
// 前端请求 /api/xxx 会转发到 http://localhost:8080/api/xxx
|
|
|
|
|
|
// 调试时将 cookie 域改写为 localhost
|
2025-10-23 17:50:12 +08:00
|
|
|
|
cookieDomainRewrite: 'localhost',
|
2025-10-21 16:50:33 +08:00
|
|
|
|
cookiePathRewrite: '/',
|
|
|
|
|
|
configure: (proxy, _options) => {
|
|
|
|
|
|
proxy.on('error', (err, _req, _res) => {
|
|
|
|
|
|
console.log('proxy error', err);
|
|
|
|
|
|
});
|
|
|
|
|
|
proxy.on('proxyReq', (proxyReq, req, _res) => {
|
|
|
|
|
|
console.log('Sending Request to the Target:', req.method, req.url);
|
|
|
|
|
|
});
|
|
|
|
|
|
proxy.on('proxyRes', (proxyRes, req, _res) => {
|
|
|
|
|
|
console.log('Received Response from the Target:', proxyRes.statusCode, req.url);
|
|
|
|
|
|
const setCookie = proxyRes.headers['set-cookie'];
|
|
|
|
|
|
if (setCookie) {
|
|
|
|
|
|
console.log('Proxy Set-Cookie:', setCookie);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
2025-11-13 17:01:39 +08:00
|
|
|
|
|
|
|
|
|
|
// 生产环境构建配置
|
2025-10-21 16:50:33 +08:00
|
|
|
|
build: {
|
|
|
|
|
|
outDir: 'dist',
|
2025-11-13 17:01:39 +08:00
|
|
|
|
assetsDir: 'static',
|
|
|
|
|
|
// 代码分割优化
|
|
|
|
|
|
rollupOptions: {
|
|
|
|
|
|
output: {
|
|
|
|
|
|
manualChunks: {
|
|
|
|
|
|
'vue-vendor': ['vue', 'vue-router', 'pinia'],
|
|
|
|
|
|
'element-plus': ['element-plus', '@element-plus/icons-vue'],
|
|
|
|
|
|
'utils': ['axios']
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// 生产环境移除 console
|
|
|
|
|
|
// 注意:如果使用 terser,需要安装: npm install -D terser
|
|
|
|
|
|
// 暂时使用 esbuild(默认,更快)
|
|
|
|
|
|
minify: 'esbuild',
|
|
|
|
|
|
// terserOptions: {
|
|
|
|
|
|
// compress: {
|
|
|
|
|
|
// drop_console: true,
|
|
|
|
|
|
// drop_debugger: true
|
|
|
|
|
|
// }
|
|
|
|
|
|
// },
|
|
|
|
|
|
// 块大小警告限制
|
|
|
|
|
|
chunkSizeWarningLimit: 1000
|
2025-10-21 16:50:33 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|