import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import tailwindcss from '@tailwindcss/vite' import vue from '@vitejs/plugin-vue' import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' import { resolve } from 'path' import { visualizer } from 'rollup-plugin-visualizer' // https://vitejs.dev/config/ export default defineConfig(({ isSsrBuild }) => ({ plugins: [ tailwindcss(), visualizer({ filename: './dist/stats.html', open: true, // Automatically opens in browser gzipSize: true, brotliSize: true, }), vue(), VueI18nPlugin({ include: resolve(__dirname, 'src/locales/**') }) ], server: { port: 5173, // Ensure this matches your WebStorm debug URL open: false, host: '0.0.0.0', proxy: { '/api': { target: 'http://localhost:5080', changeOrigin: true, }, '/health': { target: 'http://localhost:5080', changeOrigin: true, }, }, }, build: { sourcemap: true, // Enable source maps for debugging rollupOptions: { output: isSsrBuild ? undefined : { manualChunks(id) { if (id.includes('/node_modules/vue/')) { return 'vue' } if (id.includes('/node_modules/vuetify/')) { return 'vuetify' } if (id.includes('/node_modules/vuedraggable/')) { return 'vuedraggable' } if (id.includes('/node_modules/lodash/') || id.includes('/node_modules/axios/')) { return 'vendor' } }, format: 'es', entryFileNames: '[name].[hash].js', chunkFileNames: '[name].[hash].js', assetFileNames: '[name].[hash].[ext]' } } }, ssr: { noExternal: ['vuetify'], }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, json: { stringify: false } }))