vite.config.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import react from '@vitejs/plugin-react';
  2. import { defineConfig, transformWithEsbuild } from 'vite';
  3. import pkg from '@douyinfe/vite-plugin-semi';
  4. const { vitePluginSemi } = pkg;
  5. // https://vitejs.dev/config/
  6. export default defineConfig({
  7. plugins: [
  8. {
  9. name: 'treat-js-files-as-jsx',
  10. async transform(code, id) {
  11. if (!/src\/.*\.js$/.test(id)) {
  12. return null;
  13. }
  14. // Use the exposed transform from vite, instead of directly
  15. // transforming with esbuild
  16. return transformWithEsbuild(code, id, {
  17. loader: 'jsx',
  18. jsx: 'automatic',
  19. });
  20. },
  21. },
  22. react(),
  23. vitePluginSemi({
  24. cssLayer: true
  25. })
  26. ],
  27. optimizeDeps: {
  28. force: true,
  29. esbuildOptions: {
  30. loader: {
  31. '.js': 'jsx',
  32. '.json': 'json',
  33. },
  34. },
  35. },
  36. build: {
  37. rollupOptions: {
  38. output: {
  39. manualChunks: {
  40. 'react-core': ['react', 'react-dom', 'react-router-dom'],
  41. 'semi-ui': ['@douyinfe/semi-icons', '@douyinfe/semi-ui'],
  42. visactor: ['@visactor/react-vchart', '@visactor/vchart'],
  43. tools: ['axios', 'history', 'marked'],
  44. 'react-components': [
  45. 'react-dropzone',
  46. 'react-fireworks',
  47. 'react-telegram-login',
  48. 'react-toastify',
  49. 'react-turnstile',
  50. ],
  51. i18n: [
  52. 'i18next',
  53. 'react-i18next',
  54. 'i18next-browser-languagedetector',
  55. ],
  56. },
  57. },
  58. },
  59. },
  60. server: {
  61. host: '0.0.0.0',
  62. proxy: {
  63. '/api': {
  64. target: 'http://localhost:3000',
  65. changeOrigin: true,
  66. },
  67. '/pg': {
  68. target: 'http://localhost:3000',
  69. changeOrigin: true,
  70. },
  71. },
  72. },
  73. });