vite.config.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { defineConfig } from 'vite';
  2. import react from '@vitejs/plugin-react';
  3. import { visualizer } from 'rollup-plugin-visualizer';
  4. // https://vite.dev/config/
  5. export default defineConfig({
  6. plugins: [
  7. react(),
  8. // Bundle 分析工具(通过 ANALYZE=true 环境变量启用)
  9. process.env.ANALYZE === 'true' && visualizer({
  10. open: false,
  11. filename: 'dist/stats.html',
  12. gzipSize: true,
  13. brotliSize: true,
  14. template: 'treemap',
  15. }),
  16. ].filter(Boolean),
  17. build: {
  18. // Enable minification for production builds (Req 13.9)
  19. // Vite 8+ uses oxc by default; 'esbuild' requires a separate install.
  20. // Leaving minify at its default ('oxc' in Vite 8) gives fast, aggressive
  21. // minification out of the box.
  22. // minify: 'esbuild', // uncomment if esbuild is installed separately
  23. // Large optional libraries are split by dynamic imports.
  24. chunkSizeWarningLimit: 600,
  25. rollupOptions: {
  26. output: {
  27. manualChunks(id: string) {
  28. if (/node_modules[\\/](?:react|react-dom)[\\/]/.test(id)) {
  29. return 'react-vendor';
  30. }
  31. if (/node_modules[\\/](?:axios|zustand|uuid)[\\/]/.test(id)) {
  32. return 'utils-vendor';
  33. }
  34. },
  35. },
  36. },
  37. // 启用 CSS 代码分割
  38. cssCodeSplit: true,
  39. // 小于此阈值的资源将内联为 base64
  40. assetsInlineLimit: 4096, // 4KB
  41. },
  42. // 开发服务器配置
  43. server: {
  44. port: 5173,
  45. host: true,
  46. open: false,
  47. },
  48. // 依赖预构建优化
  49. optimizeDeps: {
  50. include: [
  51. 'react',
  52. 'react-dom',
  53. 'axios',
  54. 'zustand',
  55. 'antd',
  56. '@ant-design/icons',
  57. ],
  58. // 排除不需要预构建的大型依赖
  59. exclude: [
  60. 'mammoth',
  61. ],
  62. },
  63. });