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" import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite" import monacoEditorPlugin from "vite-plugin-monaco-editor" import IconsResolver from 'unplugin-icons/resolver' import Icons from 'unplugin-icons/vite' export default defineConfig({ main: { resolve: { alias: { config: resolve("config"), main: resolve("src/main"), common: resolve("src/common"), "@res": resolve("resources"), }, }, plugins: [externalizeDepsPlugin()], }, preload: { build: { lib: { entry: { index: resolve(__dirname, "./src/preload/index.ts"), plugin: resolve(__dirname, "./src/preload/plugin.ts"), } } }, plugins: [externalizeDepsPlugin()], }, renderer: { root: resolve(__dirname, "./src/renderer"), resolve: { alias: { config: resolve("config"), common: resolve("src/common"), "@": resolve("src/renderer/src"), "@res": resolve("resources"), }, }, css: { preprocessorOptions: { scss: { additionalData: `@use "@/assets/style/global" as *;\n`, api: "modern-compiler", }, }, }, 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"], }), }, }), VueI18nPlugin({ compositionOnly: false, include: resolve(__dirname, "packages/locales/languages/**"), }), 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"], }, "vue-i18n", ], dts: true, dirs: ["src/composables"], vueTemplate: true, }), // https://github.com/antfu/vite-plugin-components Components({ dts: true, dirs: ["src/components", "src/ui"], resolvers: [ IconsResolver({ prefix: 'icon', }), ] }), Icons(), // https://wf0.github.io/example/plugins/Formatter.html // @ts-ignore ... monacoEditorPlugin.default({ publicPath: "monacoeditorwork", customDistPath() { return resolve(__dirname, "out/renderer/monacoeditorwork") }, }), ], }, })