import react from '@vitejs/plugin-react'; import { externalizeDepsPlugin, UserConfig } from 'electron-vite'; import { resolve } from 'path'; import conditionalImportPlugin from 'vite-plugin-conditional-import'; import dynamicImportPlugin from 'vite-plugin-dynamic-import'; const currentOSEnv = process.platform; const config: UserConfig = { main: { build: { outDir: './release/app/dist/main', }, define: { 'import.meta.env.IS_LINUX': JSON.stringify(currentOSEnv === 'linux'), 'import.meta.env.IS_MACOS': JSON.stringify(currentOSEnv === 'darwin'), 'import.meta.env.IS_WIN': JSON.stringify(currentOSEnv === 'win32'), }, plugins: [ externalizeDepsPlugin(), dynamicImportPlugin(), conditionalImportPlugin({ currentEnv: currentOSEnv, envs: ['win32', 'linux', 'darwin'], }), ], resolve: { alias: { '/@/main': resolve('src/main'), '/@/shared': resolve('src/shared'), }, }, }, preload: { build: { outDir: './release/app/dist/preload', }, plugins: [externalizeDepsPlugin()], resolve: { alias: { '/@/preload': resolve('src/preload'), '/@/shared': resolve('src/shared'), }, }, }, renderer: { build: { outDir: './release/app/dist/web', }, css: { modules: { generateScopedName: '[name]__[local]__[hash:base64:5]', localsConvention: 'camelCase', }, }, plugins: [react()], resolve: { alias: { '/@/i18n': resolve('src/i18n'), '/@/remote': resolve('src/remote'), '/@/renderer': resolve('src/renderer'), '/@/shared': resolve('src/shared'), }, }, }, }; export default config;