|
1 | 1 | import { rmSync } from 'fs'
|
2 |
| -import path from 'path' |
3 | 2 | import { defineConfig } from 'vite'
|
4 | 3 | import vue from '@vitejs/plugin-vue'
|
5 |
| -import electron, { onstart } from 'vite-plugin-electron' |
| 4 | +import electron from 'vite-electron-plugin' |
| 5 | +import { customStart } from 'vite-electron-plugin/plugin' |
6 | 6 | import pkg from './package.json'
|
7 | 7 |
|
8 |
| -rmSync('dist', { recursive: true, force: true }) // v14.14.0 |
| 8 | +rmSync('dist-electron', { recursive: true, force: true }) |
9 | 9 |
|
10 | 10 | // https://vitejs.dev/config/
|
11 | 11 | export default defineConfig({
|
12 | 12 | plugins: [
|
13 | 13 | vue(),
|
14 | 14 | electron({
|
15 |
| - main: { |
16 |
| - entry: 'electron/main/index.ts', |
17 |
| - vite: { |
18 |
| - build: { |
19 |
| - // For Debug |
20 |
| - sourcemap: true, |
21 |
| - outDir: 'dist/electron/main', |
22 |
| - }, |
23 |
| - // Will start Electron via VSCode Debug |
24 |
| - plugins: [process.env.VSCODE_DEBUG ? onstart() : null], |
25 |
| - }, |
| 15 | + include: ['electron'], |
| 16 | + transformOptions: { |
| 17 | + sourcemap: !!process.env.VSCODE_DEBUG, |
26 | 18 | },
|
27 |
| - preload: { |
28 |
| - input: { |
29 |
| - // You can configure multiple preload here |
30 |
| - index: path.join(__dirname, 'electron/preload/index.ts'), |
31 |
| - }, |
32 |
| - vite: { |
33 |
| - build: { |
34 |
| - // For Debug |
35 |
| - sourcemap: 'inline', |
36 |
| - outDir: 'dist/electron/preload', |
37 |
| - }, |
38 |
| - }, |
39 |
| - }, |
40 |
| - // Enables use of Node.js API in the Renderer-process |
41 |
| - // https://github.com/electron-vite/vite-plugin-electron/tree/main/packages/electron-renderer#electron-renderervite-serve |
42 |
| - renderer: {}, |
| 19 | + // Will start Electron via VSCode Debug |
| 20 | + plugins: process.env.VSCODE_DEBUG |
| 21 | + ? [customStart(debounce(() => console.log(/* For `.vscode/.debug.script.mjs` */'[startup] Electron App')))] |
| 22 | + : undefined, |
43 | 23 | }),
|
44 | 24 | ],
|
45 |
| - server: process.env.VSCODE_DEBUG ? { |
46 |
| - host: pkg.debug.env.VITE_DEV_SERVER_HOSTNAME, |
47 |
| - port: pkg.debug.env.VITE_DEV_SERVER_PORT, |
48 |
| - } : undefined, |
| 25 | + server: process.env.VSCODE_DEBUG ? (() => { |
| 26 | + const url = new URL(pkg.debug.env.VITE_DEV_SERVER_URL) |
| 27 | + return { |
| 28 | + host: url.hostname, |
| 29 | + port: +url.port, |
| 30 | + } |
| 31 | + })() : undefined, |
| 32 | + clearScreen: false, |
49 | 33 | })
|
| 34 | + |
| 35 | +function debounce<Fn extends (...args: any[]) => void>(fn: Fn, delay = 299) { |
| 36 | + let t: NodeJS.Timeout |
| 37 | + return ((...args) => { |
| 38 | + clearTimeout(t) |
| 39 | + t = setTimeout(() => fn(...args), delay) |
| 40 | + }) as Fn |
| 41 | +} |
0 commit comments