From 526c7f88a4f347066936640c95097af78c476976 Mon Sep 17 00:00:00 2001 From: yesg <2277317060@qq.com> Date: Thu, 21 Aug 2025 09:31:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.js | 26 +++++++++++++++++++------- package.json | 27 +++++++++++++++++++++------ preload.js | 6 ++++++ vite.config.js | 1 + yarn.lock | 35 ++++++++++++++++++++++++++++++----- 5 files changed, 77 insertions(+), 18 deletions(-) create mode 100644 preload.js diff --git a/build.js b/build.js index e29a86d..2c3bb8f 100644 --- a/build.js +++ b/build.js @@ -1,14 +1,26 @@ -const { app, BrowserWindow } = require('electron'); +import { app, BrowserWindow } from 'electron' +import path from 'path' +import { fileURLToPath } from 'url' + +const __filename = fileURLToPath(import.meta.url) +const __dirname = path.dirname(__filename) function createWindow() { const win = new BrowserWindow({ - width: 1000, - height: 700, + width: 800, + height: 600, webPreferences: { - nodeIntegration: true + preload: path.join(__dirname, 'preload.js'), // preload 文件 + contextIsolation: true, + nodeIntegration: false } - }); - win.loadFile('dist/index.html'); // Vue 打包后的文件 + }) + + if (process.env.NODE_ENV === 'development') { + win.loadURL('http://localhost:5173') + } else { + win.loadFile(path.join(__dirname, 'dist/index.html')) + } } -app.whenReady().then(createWindow); +app.whenReady().then(createWindow) diff --git a/package.json b/package.json index a326caa..4907087 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,6 @@ "name": "airport", "private": true, "version": "0.0.0", - "type": "module", "main": "build.js", "description": "test", "author": "haiwei@haiwei.com", @@ -13,15 +12,31 @@ "build:electron": "electron-builder" }, "build": { - "appId": "com.example.myapp", + "appId": "com.myvue.app", "productName": "MyVueApp", + "directories": { + "output": "dist" + }, "files": [ - "dist/**/*", - "build.js" + "dist/**", + "build.js", + "preload.js", + "package.json" ], "win": { - "target": "nsis" - } + "target": [ + { + "target": "nsis", + "arch": ["x64"] + } + ] + }, + "nsis": { + "oneClick": false, + "allowToChangeInstallationDirectory": true, + "perMachine": true + }, + "asar": false }, "dependencies": { "@vitejs/plugin-basic-ssl": "^2.0.0", diff --git a/preload.js b/preload.js new file mode 100644 index 0000000..ae3b92f --- /dev/null +++ b/preload.js @@ -0,0 +1,6 @@ +const { contextBridge, ipcRenderer } = require('electron') + +contextBridge.exposeInMainWorld('electronAPI', { + send: (channel, data) => ipcRenderer.send(channel, data), + on: (channel, func) => ipcRenderer.on(channel, (event, ...args) => func(...args)) +}) diff --git a/vite.config.js b/vite.config.js index 3ee5990..607c009 100644 --- a/vite.config.js +++ b/vite.config.js @@ -5,6 +5,7 @@ import basicSsl from '@vitejs/plugin-basic-ssl'; // https://vite.dev/config/ export default defineConfig({ + base: './', plugins: [vue()], resolve: { alias: { '~': path.resolve(__dirname, './'), '@': path.resolve(__dirname, 'src') diff --git a/yarn.lock b/yarn.lock index 8bd76db..e92d23b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -87,9 +87,9 @@ optionalDependencies: global-agent "^3.0.0" -"@electron/node-gyp@git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2": +"@electron/node-gyp@https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2": version "10.2.0-electron.1" - resolved "git+https://github.com/electron/node-gyp.git#06b29aafb7708acef8b3669835c8a7857ebc92d2" + resolved "https://github.com/electron/node-gyp#06b29aafb7708acef8b3669835c8a7857ebc92d2" dependencies: env-paths "^2.2.0" exponential-backoff "^3.1.1" @@ -2663,7 +2663,16 @@ stat-mode@^1.0.0: resolved "https://registry.npmmirror.com/stat-mode/-/stat-mode-1.0.0.tgz#68b55cb61ea639ff57136f36b216a291800d1465" integrity sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2688,7 +2697,14 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -2891,7 +2907,16 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==