Spaces:
Runtime error
Runtime error
| /* | |
| Copyright (C) 2025 QuantumNous | |
| This program is free software: you can redistribute it and/or modify | |
| it under the terms of the GNU Affero General Public License as | |
| published by the Free Software Foundation, either version 3 of the | |
| License, or (at your option) any later version. | |
| This program is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU Affero General Public License for more details. | |
| You should have received a copy of the GNU Affero General Public License | |
| along with this program. If not, see <https://www.gnu.org/licenses/>. | |
| For commercial licensing, please contact support@quantumnous.com | |
| */ | |
| import react from '@vitejs/plugin-react'; | |
| import { defineConfig, transformWithEsbuild } from 'vite'; | |
| import pkg from '@douyinfe/vite-plugin-semi'; | |
| import path from 'path'; | |
| import { codeInspectorPlugin } from 'code-inspector-plugin'; | |
| const { vitePluginSemi } = pkg; | |
| // https://vitejs.dev/config/ | |
| export default defineConfig(({ command }) => { | |
| const isBuild = command === 'build'; | |
| const buildLite = process.env.VITE_BUILD_LITE === 'true'; | |
| return { | |
| resolve: { | |
| alias: { | |
| '@': path.resolve(__dirname, './src'), | |
| }, | |
| }, | |
| plugins: [ | |
| !isBuild | |
| ? codeInspectorPlugin({ | |
| bundler: 'vite', | |
| }) | |
| : null, | |
| { | |
| 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, | |
| }), | |
| ].filter(Boolean), | |
| optimizeDeps: { | |
| force: true, | |
| esbuildOptions: { | |
| loader: { | |
| '.js': 'jsx', | |
| '.json': 'json', | |
| }, | |
| }, | |
| }, | |
| build: { | |
| // 在 CI/受限环境里使用轻量构建,避免内存压力导致卡住 | |
| minify: buildLite ? false : 'esbuild', | |
| cssCodeSplit: buildLite ? false : true, | |
| 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, | |
| }, | |
| }, | |
| }, | |
| }; | |
| }); | |