diff --git a/electron/main.ts b/electron/main.ts new file mode 100644 index 0000000..11c4ce5 --- /dev/null +++ b/electron/main.ts @@ -0,0 +1,41 @@ +// main.ts + +// 控制应用生命周期和创建原生浏览器窗口的模组 +import path from "path"; +import {app, BrowserWindow} from "electron"; + + +function createWindow() { + // 创建浏览器窗口 + const mainWindow = new BrowserWindow({ + width: 800, + height: 600, + webPreferences: { + // 引入预加载文件 + preload: path.join(__dirname, "preload.js"), + }, + }); + + // 加载vite启动的本地服务 + mainWindow.loadURL("http://localhost:5173"); + +} + +// 这段程序将会在 Electron 结束初始化 +// 和创建浏览器窗口的时候调用 +// 部分 API 在 ready 事件触发后才能使用。 +app.whenReady().then(() => { + createWindow(); + + app.on("activate", function () { + // 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他 + // 打开的窗口,那么程序会重新创建一个窗口。 + if (BrowserWindow.getAllWindows().length === 0) createWindow(); + }); +}); + +// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此,通常对程序和它们在 +// 任务栏上的图标来说,应当保持活跃状态,直到用户使用 Cmd + Q 退出。 +app.on("window-all-closed", function () { + if (process.platform !== "darwin") app.quit(); +}); \ No newline at end of file diff --git a/electron/preload.ts b/electron/preload.ts new file mode 100644 index 0000000..8930735 --- /dev/null +++ b/electron/preload.ts @@ -0,0 +1 @@ +console.log("preload"); \ No newline at end of file diff --git a/package.json b/package.json index e6932fa..07cfcc5 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,12 @@ "private": true, "version": "0.0.0", "type": "module", + "main": "dist/main.js", "scripts": { "dev": "vite", - "build": "vue-tsc && vite build", - "preview": "vite preview" + "build": "vue-tsc --noEmit && vite build", + "preview": "vite preview", + "electron:dev":"tsc && electron ." }, "dependencies": { "@types/crypto-js": "^4.2.1", @@ -24,6 +26,7 @@ "@typescript-eslint/parser": "^6.11.0", "@vant/auto-import-resolver": "^1.0.2", "@vitejs/plugin-vue": "^4.2.3", + "electron": "^27.1.3", "eslint": "^8.54.0", "eslint-plugin-vue": "^9.18.1", "typescript": "^5.0.2", diff --git a/tsconfig.json b/tsconfig.json index b593cdc..2a20de0 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,9 +10,10 @@ "moduleResolution": "bundler", "allowImportingTsExtensions": true, "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, + "isolatedModules": false, + "noEmit": false, "jsx": "preserve", + "outDir": "dist", /* Linting */ "strict": true, @@ -25,7 +26,8 @@ "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", - "auto-imports.d.ts" + "auto-imports.d.ts", + "electron/*.ts" ], "references": [{ "path": "./tsconfig.node.json" }] }