From 3dc1bce5374c9d2f3ca8a5a41c315af97acd53d0 Mon Sep 17 00:00:00 2001 From: CallanBi Date: Thu, 24 Feb 2022 18:38:43 +0800 Subject: [PATCH] chore: add debug mode for main process --- .vscode/launch.json | 39 ++++++++++++++++++++++++++ .vscode/task.json | 13 +++++++++ package-lock.json | 48 ++++++++++++++++++++++++++------ package.json | 4 ++- packages/main/index.ts | 2 +- packages/main/vite.config.ts | 1 + packages/renderer/vite.config.ts | 1 + scripts/build.mjs | 5 +++- types.d.ts | 2 +- 9 files changed, 103 insertions(+), 12 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/task.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..0bf498a --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,39 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Main(inspector)", + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", + "runtimeArgs": [ + "--remote-debugging-port=9222", + "${workspaceFolder}/dist/main/index.cjs", + ], + "env": { + "DEBUG": "true", + }, + "windows": { + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd" + }, + "sourceMaps": true + }, + { + "type": "node", + "request": "launch", + "name": "Main(vite)", + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron", + "runtimeArgs": [ + "${workspaceFolder}/dist/main/index.cjs", + ], + "env": { + "VITE_DEV_SERVER_HOST": "127.0.0.1", + "VITE_DEV_SERVER_PORT": "3344", + }, + "windows": { + "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd" + }, + "sourceMaps": true + }, + ] +} \ No newline at end of file diff --git a/.vscode/task.json b/.vscode/task.json new file mode 100644 index 0000000..69dcaa7 --- /dev/null +++ b/.vscode/task.json @@ -0,0 +1,13 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "npm", + "script": "debug", + "problemMatcher": [], + "label": "npm: debug", + "detail": "cross-env-shell NODE_ENV=debug \"npm run typecheck && node scripts/build.mjs && vite ./packages/renderer\"", + "group": "build" + } + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7d0f32a..d103fde 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "vite-react-electron", "version": "1.0.0", "license": "MIT", "dependencies": { @@ -15,6 +14,7 @@ "@types/react": "^17.0.39", "@types/react-dom": "^17.0.11", "@vitejs/plugin-react": "^1.2.0", + "cross-env": "^7.0.3", "electron": "^17.0.0", "electron-builder": "^22.14.13", "react": "^17.0.2", @@ -852,6 +852,8 @@ "version": "8.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "optional": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -866,7 +868,9 @@ "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "optional": true, + "peer": true }, "node_modules/ajv-keywords": { "version": "3.5.2", @@ -1880,6 +1884,24 @@ "buffer": "^5.1.0" } }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5960,14 +5982,13 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "requires": { - "ajv": "^8.0.0" - }, + "requires": {}, "dependencies": { "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "version": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "optional": true, + "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -5978,7 +5999,9 @@ "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "optional": true, + "peer": true } } }, @@ -6755,6 +6778,15 @@ "buffer": "^5.1.0" } }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", diff --git a/package.json b/package.json index de30508..155248b 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "scripts": { "dev": "node scripts/watch.mjs", "build": "npm run typecheck && node scripts/build.mjs && electron-builder --config .electron-builder.config.js", - "typecheck": "tsc --noEmit --project packages/renderer/tsconfig.json" + "typecheck": "tsc --noEmit --project packages/renderer/tsconfig.json", + "debug": "cross-env-shell NODE_ENV=debug \"npm run typecheck && node scripts/build.mjs && vite ./packages/renderer\"" }, "engines": { "node": ">=14.17.0" @@ -22,6 +23,7 @@ "@types/react": "^17.0.39", "@types/react-dom": "^17.0.11", "@vitejs/plugin-react": "^1.2.0", + "cross-env": "^7.0.3", "electron": "^17.0.0", "electron-builder": "^22.14.13", "react": "^17.0.2", diff --git a/packages/main/index.ts b/packages/main/index.ts index 71002f5..d62fe54 100644 --- a/packages/main/index.ts +++ b/packages/main/index.ts @@ -24,7 +24,7 @@ async function createWindow() { }, }) - if (app.isPackaged) { + if (app.isPackaged || process.env['DEBUG']) { win.loadFile(join(__dirname, '../renderer/index.html')) } else { // 🚧 Use ['ENV_NAME'] avoid vite:define plugin diff --git a/packages/main/vite.config.ts b/packages/main/vite.config.ts index c415c0c..9f5e378 100644 --- a/packages/main/vite.config.ts +++ b/packages/main/vite.config.ts @@ -12,6 +12,7 @@ export default defineConfig({ fileName: () => '[name].cjs', }, minify: process.env./* from mode option */NODE_ENV === 'production', + sourcemap: process.env./* from mode option */NODE_ENV === 'debug', emptyOutDir: true, rollupOptions: { external: [ diff --git a/packages/renderer/vite.config.ts b/packages/renderer/vite.config.ts index 92354aa..746cbc5 100644 --- a/packages/renderer/vite.config.ts +++ b/packages/renderer/vite.config.ts @@ -28,6 +28,7 @@ export default defineConfig({ base: './', build: { emptyOutDir: true, + sourcemap: process.env.NODE_ENV === 'debug', outDir: '../../dist/renderer', }, resolve: { diff --git a/scripts/build.mjs b/scripts/build.mjs index cb967ca..8e79f72 100644 --- a/scripts/build.mjs +++ b/scripts/build.mjs @@ -1,5 +1,8 @@ import { build } from 'vite' -await build({ configFile: 'packages/main/vite.config.ts' }) +await build({ + configFile: 'packages/main/vite.config.ts', + mode: process.env.NODE_ENV === 'debug' ? 'debug' : 'production' +}) await build({ configFile: 'packages/preload/vite.config.ts' }) await build({ configFile: 'packages/renderer/vite.config.ts' }) diff --git a/types.d.ts b/types.d.ts index b435aec..b9d5a2e 100644 --- a/types.d.ts +++ b/types.d.ts @@ -1,7 +1,7 @@ declare namespace NodeJS { interface ProcessEnv { - NODE_ENV: 'development' | 'production' + NODE_ENV: 'development' | 'production' | 'debug' readonly VITE_DEV_SERVER_HOST: string readonly VITE_DEV_SERVER_PORT: string }