import { resolve } from "path" import { defineConfig, externalizeDepsPlugin } from "electron-vite" import vue from "@vitejs/plugin-vue" import vueJsx from "@vitejs/plugin-vue-jsx" import UnoCSS from "unocss/vite" import AutoImport from "unplugin-auto-import/vite" import Components from "unplugin-vue-components/vite" import VueMacros from "unplugin-vue-macros/vite" import { VueRouterAutoImports } from "unplugin-vue-router" import VueRouter from "unplugin-vue-router/vite" import Layouts from "vite-plugin-vue-layouts" export default defineConfig({ main: { resolve: { alias: { config: resolve("config"), main: resolve("src/main"), res: resolve("resources"), }, }, plugins: [externalizeDepsPlugin()], }, preload: { plugins: [externalizeDepsPlugin()], }, renderer: { root: resolve(__dirname, "./src/renderer"), resolve: { alias: { config: resolve("config"), "@": resolve("src/renderer/src"), "@res": resolve("resources"), }, }, css: { preprocessorOptions: { scss: { additionalData: `@use "@/assets/style/global" as *;\n`, }, }, }, build: { rollupOptions: { input: { main: resolve(__dirname, "./src/renderer/index.html"), about: resolve(__dirname, "./src/renderer/about.html"), }, }, }, plugins: [ UnoCSS(), VueMacros({ plugins: { vue: vue(), vueJsx: vueJsx(), vueRouter: VueRouter({ root: resolve(__dirname, "src/renderer"), // https://github.com/posva/unplugin-vue-router extensions: [".vue", ".setup.tsx"], exclude: ["**/_ui"], }), }, }), Layouts({ layoutsDirs: "src/layouts", pagesDirs: "src/pages", defaultLayout: "default", extensions: ["vue", "setup.tsx"], exclude: ["**/_ui"], }), // https://github.com/antfu/unplugin-auto-import AutoImport({ imports: [ "vue", "@vueuse/core", VueRouterAutoImports, { // add any other imports you were relying on "vue-router/auto": ["useLink"], }, ], dts: true, dirs: ["src/composables"], vueTemplate: true, }), // https://github.com/antfu/vite-plugin-components Components({ dts: true, dirs: ["src/components"], }), ], }, })