Files
social-media/frontend/vite.config.js

76 lines
2.0 KiB
JavaScript

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]'
}
}
},
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
json: {
stringify: false
}
}))