import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import electron from 'vite-plugin-electron' import renderer from 'vite-plugin-electron-renderer' import { resolve } from 'path' export default defineConfig({ base: './', server: { port: 3000, strictPort: false // 如果3000被占用,自动尝试下一个 }, build: { commonjsOptions: { ignoreDynamicRequires: true } }, optimizeDeps: { exclude: [] }, plugins: [ react(), electron([ { entry: 'electron/main.ts', vite: { build: { outDir: 'dist-electron', rollupOptions: { external: [ 'better-sqlite3', 'koffi', 'fsevents', 'whisper-node', 'shelljs', 'exceljs', 'node-llama-cpp' ] } } } }, { entry: 'electron/annualReportWorker.ts', vite: { build: { outDir: 'dist-electron', rollupOptions: { external: [ 'koffi', 'fsevents' ], output: { entryFileNames: 'annualReportWorker.js', inlineDynamicImports: true } } } } }, { entry: 'electron/dualReportWorker.ts', vite: { build: { outDir: 'dist-electron', rollupOptions: { external: [ 'koffi', 'fsevents' ], output: { entryFileNames: 'dualReportWorker.js', inlineDynamicImports: true } } } } }, { entry: 'electron/imageSearchWorker.ts', vite: { build: { outDir: 'dist-electron', rollupOptions: { output: { entryFileNames: 'imageSearchWorker.js', inlineDynamicImports: true } } } } }, { entry: 'electron/wcdbWorker.ts', vite: { build: { outDir: 'dist-electron', rollupOptions: { external: [ 'better-sqlite3', 'koffi', 'fsevents' ], output: { entryFileNames: 'wcdbWorker.js', inlineDynamicImports: true } } } } }, { entry: 'electron/transcribeWorker.ts', vite: { build: { outDir: 'dist-electron', rollupOptions: { external: [ 'sherpa-onnx-node' ], output: { entryFileNames: 'transcribeWorker.js', inlineDynamicImports: true } } } } }, { entry: 'electron/preload.ts', onstart(options) { options.reload() }, vite: { build: { outDir: 'dist-electron' } } } ]), renderer() ], resolve: { alias: { '@': resolve(__dirname, 'src') } } })