Files
new-api/web/vite.config.js
Apple\Apple 74572ab2ee feat: Support TailwindCSS V3
Signed-off-by: Apple\Apple <zeraturing@foxmail.com>
2025-05-06 00:14:18 +08:00

92 lines
2.2 KiB
JavaScript

import react from '@vitejs/plugin-react';
import { defineConfig, transformWithEsbuild } from 'vite';
// 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(),
{
name: 'semi-css-layer',
transformIndexHtml(html) {
// Add layer to Semi CSS by prepending style tag
return html.replace(
/<\/head>/,
`<style>@layer tailwind-base,semi,tailwind-components,tailwind-utils;</style></head>`
);
},
transform(code, id) {
if (id.includes('@douyinfe/semi-ui') && id.endsWith('.css')) {
// Wrap Semi CSS in a layer
return {
code: `@layer semi { ${code} }`,
map: null
};
}
return null;
}
}
],
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'],
semantic: ['semantic-ui-offline', 'semantic-ui-react'],
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,
},
'/pg': {
target: 'http://localhost:3000',
changeOrigin: true,
},
},
},
});