import react from '@vitejs/plugin-react'; import { defineConfig, transformWithEsbuild } from 'vite'; import pkg from '@douyinfe/vite-plugin-semi'; import path from 'path'; const { vitePluginSemi } = pkg; export default defineConfig({ resolve: { alias: { '@': path.resolve(__dirname, './src'), }, }, plugins: [ { name: 'treat-js-files-as-jsx', async transform(code, id) { if (!/src\/.*\.js$/.test(id)) { return null; } return transformWithEsbuild(code, id, { loader: 'jsx', jsx: 'automatic', }); }, }, react(), vitePluginSemi({ cssLayer: true, }), ], optimizeDeps: { include: ['date-fns/locale'], 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'], 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, }, }, }, });