| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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(),
-
- // Bundle 分析工具(通过 ANALYZE=true 环境变量启用)
- process.env.ANALYZE === 'true' && visualizer({
- open: false,
- filename: 'dist/stats.html',
- gzipSize: true,
- brotliSize: true,
- template: 'treemap',
- }),
- ].filter(Boolean),
- build: {
- // Enable minification for production builds (Req 13.9)
- // Vite 8+ uses oxc by default; 'esbuild' requires a separate install.
- // Leaving minify at its default ('oxc' in Vite 8) gives fast, aggressive
- // minification out of the box.
- // minify: 'esbuild', // uncomment if esbuild is installed separately
- // Large optional libraries are split by dynamic imports.
- chunkSizeWarningLimit: 600,
- rollupOptions: {
- output: {
- manualChunks(id: string) {
- if (/node_modules[\\/](?:react|react-dom)[\\/]/.test(id)) {
- return 'react-vendor';
- }
- if (/node_modules[\\/](?:axios|zustand|uuid)[\\/]/.test(id)) {
- return 'utils-vendor';
- }
- },
- },
- },
- // 启用 CSS 代码分割
- cssCodeSplit: true,
- // 小于此阈值的资源将内联为 base64
- assetsInlineLimit: 4096, // 4KB
- },
- // 开发服务器配置
- server: {
- port: 5173,
- host: true,
- open: false,
- },
- // 依赖预构建优化
- optimizeDeps: {
- include: [
- 'react',
- 'react-dom',
- 'axios',
- 'zustand',
- 'antd',
- '@ant-design/icons',
- ],
- // 排除不需要预构建的大型依赖
- exclude: [
- 'mammoth',
- ],
- },
- });
|