import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import { resolve } from 'path' export default defineConfig({ plugins: [react()], build: { outDir: '../assets/dist', emptyOutDir: true, manifest: true, // Use Terser to avoid React being mangled to `_` (conflicts with lodash/underscore on WP) minify: 'terser', terserOptions: { mangle: { // Keep these identifiers intact reserved: ['React', 'ReactDOM', '_'], }, keep_classnames: true, keep_fnames: true, }, rollupOptions: { input: { main: resolve(__dirname, 'src/main.tsx'), }, output: { format: 'es', entryFileNames: 'js/[name]-[hash].js', chunkFileNames: 'js/[name]-[hash].js', assetFileNames: (assetInfo) => { const info = assetInfo.name?.split('.') || [] const ext = info[info.length - 1] if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(ext)) { return `images/[name]-[hash].[ext]` } if (/css/i.test(ext)) { return `css/[name]-[hash].[ext]` } return `assets/[name]-[hash].[ext]` } } } }, resolve: { alias: { '@': resolve(__dirname, 'src'), }, }, server: { port: 3000, open: true, host: true, }, })