import { resolve } from 'path' import { readFileSync } from 'fs' import { defineConfig, externalizeDepsPlugin } from 'electron-vite' import vue from '@vitejs/plugin-vue' import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' const pkg = JSON.parse(readFileSync(resolve('package.json'), 'utf-8')) as { version: string } const sharedAlias = { '@shared': resolve('src/shared') } export default defineConfig({ main: { resolve: { alias: sharedAlias }, plugins: [externalizeDepsPlugin()] }, preload: { plugins: [externalizeDepsPlugin()] }, renderer: { resolve: { alias: { '@': resolve('src/renderer/src'), ...sharedAlias } }, define: { __APP_VERSION__: JSON.stringify(pkg.version) }, plugins: [ vue(), // 构建时预编译多语言消息 + 使用 vue-i18n runtime 构建, // 避免运行时 new Function() 编译消息(会被 CSP script-src 'self' 拦截导致白屏) VueI18nPlugin({ include: [resolve('src/renderer/src/i18n/locales/**')], runtimeOnly: true }) ] } })