From fe103943f2baa2951d4d9d7860ab6044bac78ca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=89=E9=9E=8B=E6=B2=A1=E5=8F=B7?= <308487730@qq.com> Date: Fri, 22 Jul 2022 15:28:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(=F0=9F=8C=B1):=20support=20Debug=20in=20VS?= =?UTF-8?q?Code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/.debug.script.mjs | 4 ++++ vite.config.ts | 29 ++++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/.vscode/.debug.script.mjs b/.vscode/.debug.script.mjs index 8091ced..cbc3357 100644 --- a/.vscode/.debug.script.mjs +++ b/.vscode/.debug.script.mjs @@ -12,8 +12,12 @@ const pkg = require('../package.json') const envContent = Object.entries(pkg.env).map(([key, val]) => `${key}=${val}`) fs.writeFileSync(path.join(__dirname, '.debug.env'), envContent.join('\n')) +// for debug +fs.writeFileSync(path.join(__dirname, '../node_modules/.electron-vite-debug'), '') + // bootstrap spawn( + // TODO: terminate `npm run dev` when Debug exits. process.platform === 'win32' ? 'npm.cmd' : 'npm', ['run', 'dev'], { stdio: 'inherit' }, diff --git a/vite.config.ts b/vite.config.ts index 3c8855d..a89efae 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,6 @@ -import { rmSync } from 'fs' +import { existsSync, rmSync } from 'fs' import { join } from 'path' -import { defineConfig } from 'vite' +import { defineConfig, UserConfig, Plugin } from 'vite' import react from '@vitejs/plugin-react' import electron from 'vite-plugin-electron' import pkg from './package.json' @@ -20,12 +20,11 @@ export default defineConfig({ electron({ main: { entry: 'electron/main/index.ts', - vite: { + vite: withDebug({ build: { - sourcemap: false, outDir: 'dist/electron/main', }, - }, + }), }, preload: { input: { @@ -49,3 +48,23 @@ export default defineConfig({ port: pkg.env.VITE_DEV_SERVER_PORT, }, }) + +function withDebug(config: UserConfig): UserConfig { + const debugFile = join(__dirname, 'node_modules/.electron-vite-debug') + const isDebug = existsSync(debugFile) + + if (isDebug) { + config.build.sourcemap = true + config.plugins = (config.plugins || []).concat({ + name: 'electron-vite-debug', + configResolved(config) { + // TODO: when the next version of `vite-plugine-electron` is released, use the config hook. + const index = config.plugins.findIndex(p => p.name === 'electron-main-watcher'); + (config.plugins as Plugin[]).splice(index, 1) + rmSync(debugFile) + }, + }) + } + + return config +}