import { resolve } from 'path' import { defineConfig } from 'electron-vite' 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' import tailwindcss from '@tailwindcss/vite' import IconsResolver from 'unplugin-icons/resolver' export default defineConfig({ main: { build: { rollupOptions: { input: { index: resolve(__dirname, 'electron/main/index.ts') } } } }, preload: { build: { rollupOptions: { input: { index: resolve(__dirname, 'electron/preload/index.ts') } } } }, renderer: { server: { cors: true, proxy: { '/websocket': { target: 'ws://127.0.0.1:8899/', changeOrigin: true, ws: true } } }, root: '.', build: { rollupOptions: { input: { index: resolve(__dirname, 'index.html') } } }, resolve: { alias: { '@': resolve('src') } }, plugins: [ vue(), tailwindcss(), AutoImport({ resolvers: [ // 自动导入 Element Plus 相关函数,如:ElMessage, ElMessageBox... (带样式) ElementPlusResolver(), // 自动导入图标组件 IconsResolver({}) ], imports: ['vue', 'vue-router', '@vueuse/core'], dts: 'src/types/auto-imports.d.ts' // 自动生成 auto-imports.d.ts }), Components({ resolvers: [ ElementPlusResolver(), IconsResolver({ // 图标库,其他图标库 https://icon-sets.iconify.design/ enabledCollections: ['ep'] }) ], dirs: ['src/components', 'src/**/components', 'src/**/components/**/*.vue'], dts: 'src/types/auto-components.d.ts' // 自动生成 components.d.ts }) ], optimizeDeps: { include: [ 'vue', 'vue-router', 'axios', '@vueuse/core', 'nprogress', 'element-plus/es/components/tooltip/style/css', 'element-plus/es/components/tabs/style/css', 'element-plus/es/components/tab-pane/style/css', 'element-plus/es/components/select/style/css', 'element-plus/es/components/option/style/css', 'element-plus/es/components/input/style/css', 'element-plus/es/components/row/style/css', 'element-plus/es/components/slider/style/css', 'element-plus/es/components/col/style/css', 'element-plus/es/components/switch/style/css', 'element-plus/es/components/checkbox/style/css', '@vue/reactivity', 'element-plus/es/components/config-provider/style/css', 'element-plus/es/locale/lang/zh-cn', '@element-plus/icons-vue', 'element-plus/es/components/container/style/css', 'element-plus/es/components/footer/style/css', 'element-plus/es/components/main/style/css', 'element-plus/es/components/header/style/css', 'element-plus/es/components/button/style/css', 'element-plus/es/components/pagination/style/css', 'element-plus/es/components/table/style/css', 'element-plus/es/components/table-column/style/css', 'element-plus/es/components/form/style/css', 'element-plus/es/components/form-item/style/css' ] } } })