40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
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
|
|
})
|
|
]
|
|
}
|
|
})
|