import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { fileURLToPath, URL } from 'node:url' export default defineConfig({ base: './', plugins: [vue()], build: { rollupOptions: { output: { manualChunks(id) { if (id.includes('/src/i18n/')) return 'i18n' if ( id.includes('/src/components/CanvasStage.vue') || id.includes('/src/components/AssetSidebar.vue') || id.includes('/src/components/PropertiesPanel.vue') || id.includes('/src/components/ActionEditor.vue') || id.includes('/src/components/FontPicker.vue') || id.includes('/src/components/RangeSlider.vue') || id.includes('/src/components/SvgLayerPanel.vue') || id.includes('/src/stores/scene.ts') || id.includes('/src/types/scene.ts') || id.includes('/src/lib/render.ts') || id.includes('/src/lib/interpolate.ts') || id.includes('/src/lib/wiggle.ts') || id.includes('/src/lib/kaleido.ts') || id.includes('/src/lib/clipBounds.ts') || id.includes('/src/lib/actions.ts') || id.includes('/src/lib/sceneOrder.ts') || id.includes('/src/composables/useButtonRuntime.ts') ) { return 'editor' } if ( id.includes('/src/components/Timeline.vue') || id.includes('/src/lib/timelineSnap.ts') || id.includes('/src/composables/useAudioWaveform.ts') ) { return 'timeline' } if (!id.includes('/node_modules/')) return undefined if (id.includes('/@phosphor-icons/vue/')) return 'icons' if (id.includes('/konva/') || id.includes('/vue-konva/')) return 'canvas' if ( id.includes('/gifenc/') || id.includes('/upng-js/') ) { return 'encoders' } if ( id.includes('/vue/') || id.includes('/@vue/') || id.includes('/pinia/') ) { return 'framework' } return 'vendor' }, }, }, }, server: { port: 5200, }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, })