import { resolve } from 'node:path'; import { defineConfig, externalizeDepsPlugin } from 'electron-vite'; import vue from '@vitejs/plugin-vue'; // The app main/preload/renderer are TypeScript + ESM. Each main-process module // is its own rollup input so it is emitted to out/main/.js and the // relative imports between them (and `new Worker(__dirname/indexer-worker.js)`) // resolve to the built .js at runtime. export default defineConfig({ main: { plugins: [externalizeDepsPlugin()], build: { rollupOptions: { input: { index: resolve('src/main/index.ts'), 'file-reference': resolve('src/main/file-reference.ts'), indexer: resolve('src/main/indexer.ts'), 'indexer-service': resolve('src/main/indexer-service.ts'), 'indexer-worker': resolve('src/main/indexer-worker.ts'), 'indexer-worker-client': resolve('src/main/indexer-worker-client.ts'), 'recap-capture-query': resolve('src/main/recap-capture-query.ts'), }, }, }, }, preload: { plugins: [externalizeDepsPlugin()], build: { rollupOptions: { // Electron sandbox does not support ESM preload — emit CJS index.js // (main loads ../preload/index.js) even though the project is ESM. output: { format: 'cjs', entryFileNames: '[name].js' }, }, }, }, renderer: { plugins: [vue()], }, });