import { defineConfig } from 'vite' import { fileURLToPath } from 'node:url' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineConfig({ plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver({ importStyle: 'css' })], dts: false, }), Components({ resolvers: [ElementPlusResolver({ importStyle: 'css' })], dts: false, }), ], base: './', build: { outDir: '../static/app', emptyOutDir: true, manifest: true, cssCodeSplit: true, chunkSizeWarningLimit: 800, rollupOptions: { input: { app: fileURLToPath(new URL('./index.html', import.meta.url)), login: fileURLToPath(new URL('./login.html', import.meta.url)), }, output: { manualChunks(id) { if (!id.includes('node_modules')) return undefined if ( id.includes('/node_modules/vue/') || id.includes('/node_modules/@vue/') || id.includes('/node_modules/vue-router/') || id.includes('/node_modules/pinia/') ) { return 'vendor-vue' } if (id.includes('/node_modules/axios/')) { return 'vendor-axios' } if ( id.includes('/node_modules/socket.io-client/') || id.includes('/node_modules/engine.io-client/') || id.includes('/node_modules/socket.io-parser/') ) { return 'vendor-realtime' } return undefined }, }, }, }, })