import { defineConfig, mergeConfig } from "vite"; import { createBuildConfig } from "./vite.config.common.mts"; import path from 'path'; export default defineConfig(async () => { const baseConfig = await createBuildConfig('electron'); return mergeConfig(baseConfig, { build: { outDir: 'dist-electron', rollupOptions: { input: { main: path.resolve(__dirname, 'src/electron/main.ts'), preload: path.resolve(__dirname, 'src/electron/preload.js'), }, external: ['electron'], output: { format: 'cjs', entryFileNames: '[name].js', assetFileNames: 'assets/[name].[ext]', }, }, target: 'node18', minify: false, sourcemap: true, }, resolve: { alias: { '@': path.resolve(__dirname, 'src'), }, }, optimizeDeps: { include: ['@/utils/logger'] }, plugins: [ { name: 'typescript-transform', transform(code: string, id: string) { if (id.endsWith('main.ts')) { // Replace the logger import with inline logger return code.replace( /import\s*{\s*logger\s*}\s*from\s*['"]@\/utils\/logger['"];?/, `const logger = { log: (...args) => console.log(...args), error: (...args) => console.error(...args), info: (...args) => console.info(...args), warn: (...args) => console.warn(...args), debug: (...args) => console.debug(...args), };` ); } return code; } }, { name: 'remove-sw-imports', transform(code: string, id: string) { if ( id.includes('registerServiceWorker') || id.includes('register-service-worker') || id.includes('sw_scripts') || id.includes('PushNotificationPermission') || code.includes('navigator.serviceWorker') ) { return { code: code .replace(/import.*registerServiceWorker.*$/mg, '') .replace(/import.*register-service-worker.*$/mg, '') .replace(/navigator\.serviceWorker/g, 'undefined') .replace(/if\s*\([^)]*serviceWorker[^)]*\)\s*{[^}]*}/g, '') }; } } } ], ssr: { noExternal: ['@/utils/logger'] }, base: './', publicDir: 'public', }); });