import react from '@vitejs/plugin-react'; import { defineConfig, transformWithEsbuild } from 'vite'; import pkg from '@douyinfe/vite-plugin-semi'; const { vitePluginSemi } = pkg; // https://vitejs.dev/config/ export default defineConfig({ plugins: [ { name: 'treat-js-files-as-jsx', async transform(code, id) { if (!/src\/.*\.js$/.test(id)) { return null; } // Use the exposed transform from vite, instead of directly // transforming with esbuild return transformWithEsbuild(code, id, { loader: 'jsx', jsx: 'automatic', }); }, }, react(), vitePluginSemi({ cssLayer: true }) ], optimizeDeps: { force: true, esbuildOptions: { loader: { '.js': 'jsx', '.json': 'json', }, }, }, build: { rollupOptions: { output: { manualChunks: { 'react-core': ['react', 'react-dom', 'react-router-dom'], 'semi-ui': ['@douyinfe/semi-icons', '@douyinfe/semi-ui'], visactor: ['@visactor/react-vchart', '@visactor/vchart'], tools: ['axios', 'history', 'marked'], 'react-components': [ 'react-dropzone', 'react-fireworks', 'react-telegram-login', 'react-toastify', 'react-turnstile', ], i18n: [ 'i18next', 'react-i18next', 'i18next-browser-languagedetector', ], }, }, }, }, server: { host: '0.0.0.0', proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true, }, '/mj': { target: 'http://localhost:3000', changeOrigin: true, }, '/pg': { target: 'http://localhost:3000', changeOrigin: true, }, }, }, });