import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import { fileURLToPath, URL } from 'node:url'; // Deliberately simple: one entry in this first slice (dashboard). Add more // entries here as additional pages get rebuilt — same flat pattern each // time, no shared scoping/theme-remap layer to keep in sync across files. export default defineConfig({ root: fileURLToPath(new URL('./src', import.meta.url)), plugins: [vue()], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, build: { outDir: fileURLToPath(new URL('./dist', import.meta.url)), emptyOutDir: true, sourcemap: true, manifest: true, rollupOptions: { input: { shell: fileURLToPath(new URL('./src/entries/shell.js', import.meta.url)), dashboard: fileURLToPath(new URL('./src/entries/dashboard.js', import.meta.url)), settings: fileURLToPath(new URL('./src/entries/settings.js', import.meta.url)), 'menu-creator': fileURLToPath(new URL('./src/entries/menu-creator.js', import.meta.url)), 'admin-notices': fileURLToPath(new URL('./src/entries/admin-notices.js', import.meta.url)), 'role-editor': fileURLToPath(new URL('./src/entries/role-editor.js', import.meta.url)), 'activity-log': fileURLToPath(new URL('./src/entries/activity-log.js', import.meta.url)), 'database-explorer': fileURLToPath(new URL('./src/entries/database-explorer.js', import.meta.url)), }, output: { entryFileNames: '[name].[hash].js', chunkFileNames: 'assets/[name].[hash].js', assetFileNames: 'assets/[name].[hash][extname]', }, }, }, });