diff --git a/.vscode/launch.json b/.vscode/launch.json
index 5149ca0..b81c947 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,23 +1,17 @@
-
-
 {
   "version": "0.2.0",
   "configurations": [
     {
       "type": "node",
       "request": "launch",
-      "name": "Main",
+      "name": "Main(inspector)",
       "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron",
-      // "program": "${workspaceRoot}/packages/main/index.ts",
-      // "outFiles": [
-      //   "${workspaceRoot}/dist/main/index.cjs"
-      // ],
       "runtimeArgs": [
-        "./dist/main/index.cjs",
+        "--remote-debugging-port=9222",
+        "${workspaceFolder}/dist/main/index.cjs",
       ],
       "env": {
-        "VITE_DEV_SERVER_HOST": "127.0.0.1",
-        "VITE_DEV_SERVER_PORT": "3344"
+        "DEBUG": "true",
       },
       "windows": {
         "runtimeExecutable": "${workspaceFolder}/node_modules/.bin/electron.cmd"
@@ -27,18 +21,51 @@
     {
       "type": "chrome",
       "request": "launch",
-      "name": "Renderer",
+      "name": "Renderer(inspector)",
+      "url": "http://localhost:9222",
+      "webRoot": "${workspaceFolder}/dist/packages/renderer",
+    },
+    {
+      "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
+    },
+    {
+      "type": "chrome",
+      "request": "launch",
+      "name": "Renderer(vite)",
       "url": "http://localhost:3344",
       "webRoot": "${workspaceFolder}/packages/renderer",
     },
   ],
   "compounds": [
     {
-      "name": "All",
+      "name": "All(inspector)",
       "configurations": [
-        "Renderer",
-        "Main",
-      ]
+        "Renderer(inspector)",
+        "Main(inspector)",
+      ],
+      "preLaunchTask": "npm: prebuild"
+    },
+    {
+      "name": "All(vite serve)",
+      "configurations": [
+        "Renderer(vite)",
+        "Main(vite)",
+      ],
+      "preLaunchTask": "npm: debug"
     }
   ]
-}
+}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000..1db6a14
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,21 @@
+{
+	"version": "2.0.0",
+	"tasks": [
+		{
+			"type": "npm",
+			"script": "prebuild",
+			"group": "build",
+			"problemMatcher": [],
+			"label": "npm: prebuild",
+			"detail": "vue-tsc --project packages/renderer/tsconfig.json --noEmit && node scripts/build.mjs"
+		},
+		{
+			"type": "npm",
+			"script": "debug",
+			"problemMatcher": [],
+			"label": "npm: debug",
+			"detail": "npm run prebuild && vite ./packages/renderer",
+			"group": "build"
+		},
+	]
+}
\ No newline at end of file
diff --git a/packages/main/index.ts b/packages/main/index.ts
index 394f3cc..5779c82 100644
--- a/packages/main/index.ts
+++ b/packages/main/index.ts
@@ -23,7 +23,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 ae9c78e..bc67a88 100644
--- a/packages/main/vite.config.ts
+++ b/packages/main/vite.config.ts
@@ -11,7 +11,7 @@ export default defineConfig({
       formats: ['cjs'],
       fileName: () => '[name].cjs',
     },
-    minify: false,
+    minify: process.env./* from mode option */NODE_ENV === 'production',
     sourcemap: true,
     emptyOutDir: true,
     rollupOptions: {
diff --git a/packages/preload/vite.config.ts b/packages/preload/vite.config.ts
index 3f3ddce..2694c2e 100644
--- a/packages/preload/vite.config.ts
+++ b/packages/preload/vite.config.ts
@@ -11,6 +11,7 @@ export default defineConfig({
       formats: ['cjs'],
       fileName: () => '[name].cjs',
     },
+    sourcemap: true,
     minify: process.env./* from mode option */NODE_ENV === 'production',
     emptyOutDir: true,
     rollupOptions: {
diff --git a/packages/renderer/vite.config.ts b/packages/renderer/vite.config.ts
index 39f324c..5b47fb5 100644
--- a/packages/renderer/vite.config.ts
+++ b/packages/renderer/vite.config.ts
@@ -25,6 +25,7 @@ export default defineConfig({
   base: './',
   build: {
     emptyOutDir: true,
+    sourcemap: true,
     outDir: '../../dist/renderer',
   },
   server: {