Files
gongxue-base/apps/admin/vite.config.ts
T

62 lines
2.0 KiB
TypeScript

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import { visualizer } from 'rollup-plugin-visualizer';
// https://vite.dev/config/
export default defineConfig({
plugins: [
react(),
...(process.env.BUNDLE_VISUALIZE
? [visualizer({ filename: 'dist/stats.json', template: 'raw-data', gzipSize: true })]
: []),
],
server: {
port: 3002,
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
},
},
},
build: {
// 稳定 vendor 分包:大库单独成 chunk,利于浏览器缓存与按需加载
rolldownOptions: {
output: {
codeSplitting: {
groups: [
{
name: (id) => {
if (!id.includes('node_modules')) return null;
// 只对体积大且相互独立的纯库手动分组;antd/markdown 栈
// 交给 rolldown 默认分包,避免人为制造超大 chunk。
if (/[\\/]node_modules[\\/](echarts|zrender)[\\/]/.test(id)) return 'echarts';
if (/[\\/]node_modules[\\/](react|react-dom|react-router|react-router-dom|scheduler|use-sync-external-store)[\\/]/.test(id)) return 'react';
if (/[\\/]node_modules[\\/]dayjs[\\/]/.test(id)) return 'dayjs';
if (/[\\/]node_modules[\\/]@tanstack[\\/]/.test(id)) return 'tanstack';
return null;
},
},
],
},
},
},
// 剩余大 chunk 均为按需加载(AI 绘图/ECharts 等),阈值按实际调高避免误报
chunkSizeWarningLimit: 700,
},
optimizeDeps: {
include: [
'dayjs',
'dayjs/locale/zh-cn',
'dayjs/plugin/customParseFormat',
'dayjs/plugin/advancedFormat',
'dayjs/plugin/weekday',
'dayjs/plugin/localeData',
'dayjs/plugin/weekOfYear',
'dayjs/plugin/weekYear',
'dayjs/plugin/updateLocale',
'antd/es/locale/zh_CN',
],
},
});