vite.config.ts 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { defineConfig, loadEnv } from 'vite';
  2. import react from '@vitejs/plugin-react-swc';
  3. import path from 'path';
  4. export default defineConfig(({ mode }) => {
  5. // 加载环境变量
  6. const env = loadEnv(mode, process.cwd(), '');
  7. return {
  8. plugins: [react()],
  9. resolve: {
  10. extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
  11. alias: {
  12. 'vaul@1.1.2': 'vaul',
  13. 'sonner@2.0.3': 'sonner',
  14. 'recharts@2.15.2': 'recharts',
  15. 'react-resizable-panels@2.1.7': 'react-resizable-panels',
  16. 'react-hook-form@7.55.0': 'react-hook-form',
  17. 'react-day-picker@8.10.1': 'react-day-picker',
  18. 'next-themes@0.4.6': 'next-themes',
  19. 'lucide-react@0.487.0': 'lucide-react',
  20. 'input-otp@1.4.2': 'input-otp',
  21. 'embla-carousel-react@8.6.0': 'embla-carousel-react',
  22. 'cmdk@1.1.1': 'cmdk',
  23. 'class-variance-authority@0.7.1': 'class-variance-authority',
  24. '@radix-ui/react-tooltip@1.1.8': '@radix-ui/react-tooltip',
  25. '@radix-ui/react-toggle@1.1.2': '@radix-ui/react-toggle',
  26. '@radix-ui/react-toggle-group@1.1.2': '@radix-ui/react-toggle-group',
  27. '@radix-ui/react-tabs@1.1.3': '@radix-ui/react-tabs',
  28. '@radix-ui/react-switch@1.1.3': '@radix-ui/react-switch',
  29. '@radix-ui/react-slot@1.1.2': '@radix-ui/react-slot',
  30. '@radix-ui/react-slider@1.2.3': '@radix-ui/react-slider',
  31. '@radix-ui/react-separator@1.1.2': '@radix-ui/react-separator',
  32. '@radix-ui/react-select@2.1.6': '@radix-ui/react-select',
  33. '@radix-ui/react-scroll-area@1.2.3': '@radix-ui/react-scroll-area',
  34. '@radix-ui/react-radio-group@1.2.3': '@radix-ui/react-radio-group',
  35. '@radix-ui/react-progress@1.1.2': '@radix-ui/react-progress',
  36. '@radix-ui/react-popover@1.1.6': '@radix-ui/react-popover',
  37. '@radix-ui/react-navigation-menu@1.2.5': '@radix-ui/react-navigation-menu',
  38. '@radix-ui/react-menubar@1.1.6': '@radix-ui/react-menubar',
  39. '@radix-ui/react-label@2.1.2': '@radix-ui/react-label',
  40. '@radix-ui/react-hover-card@1.1.6': '@radix-ui/react-hover-card',
  41. '@radix-ui/react-dropdown-menu@2.1.6': '@radix-ui/react-dropdown-menu',
  42. '@radix-ui/react-dialog@1.1.6': '@radix-ui/react-dialog',
  43. '@radix-ui/react-context-menu@2.2.6': '@radix-ui/react-context-menu',
  44. '@radix-ui/react-collapsible@1.1.3': '@radix-ui/react-collapsible',
  45. '@radix-ui/react-checkbox@1.1.4': '@radix-ui/react-checkbox',
  46. '@radix-ui/react-avatar@1.1.3': '@radix-ui/react-avatar',
  47. '@radix-ui/react-aspect-ratio@1.1.2': '@radix-ui/react-aspect-ratio',
  48. '@radix-ui/react-alert-dialog@1.1.6': '@radix-ui/react-alert-dialog',
  49. '@radix-ui/react-accordion@1.2.3': '@radix-ui/react-accordion',
  50. '@': path.resolve(__dirname, './src'),
  51. },
  52. },
  53. build: {
  54. target: 'esnext',
  55. outDir: 'build',
  56. },
  57. server: {
  58. port: Number(env.VITE_PORT) || 3000,
  59. open: env.VITE_OPEN === 'true' || false,
  60. hmr: {
  61. // 配置 HMR WebSocket 连接,使用与服务器相同的端口
  62. clientPort: Number(env.VITE_PORT) || 3000,
  63. // 如果连接失败,不显示错误(静默失败)
  64. overlay: false,
  65. },
  66. },
  67. };
  68. });