import { fileURLToPath, URL } from 'node:url' import { createViteProxy } from 'utils4u/vite' import { defineConfig, loadEnv, type DepOptimizationOptions } from 'vite' import { Plugins } from './vite.config.plugins' // https://vite.dev/config/ export default defineConfig(({ command, mode }) => { const isBuild = command === 'build' const env = loadEnv(mode, process.cwd()) return { base: env.VITE_BASE, build: { sourcemap: env.VITE_BUILD_SOURCE_MAP === 'true', }, plugins: Plugins(), resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, define: { __DEV__: JSON.stringify(!isBuild), }, server: { allowedHosts: ['.nwct.dev'], proxy: createViteProxy(), }, optimizeDeps: optimizeDeps(), } }) const primevuecomponents = await (async () => { const { components } = await import('@primevue/metadata') return components.map((c) => c.from).filter((c) => c !== undefined) })() function optimizeDeps(): DepOptimizationOptions { return { include: [ ...primevuecomponents, '@primeuix/themes', '@primeuix/themes/lara', 'class-variance-authority', 'clsx', 'tailwind-merge', 'reka-ui', 'axios', '@ant-design/icons-vue', 'ant-design-vue/es', 'p5', '@splinetool/runtime', 'satellite.js', 'ts-enum-util', 'unplugin-vue-router', 'unplugin-vue-router/runtime', 'unplugin-vue-router/data-loaders/basic', 'unplugin-vue-router/data-loaders/pinia-colada', 'eruda', ], exclude: ['quill', 'chart.js/auto'], } }