From f8bc0cdb6a6972515d000d703d8eb8cae01d7010 Mon Sep 17 00:00:00 2001 From: hocili Date: Wed, 10 Mar 2021 18:01:42 +0800 Subject: [PATCH] add preload.js --- package.json | 7 ++++--- src/main/app.ts | 5 ++++- src/main/preload.js | 20 ++++++++++++++++++++ tsconfig.electron.json | 7 +++++-- 4 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 src/main/preload.js diff --git a/package.json b/package.json index 4960c42..9e6668e 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,8 @@ "dev": "vite", "build": "vite build", "serve": "vite preview", - "electron:dev": "NODE_ENV=development electron index.js", - "electron:build": "vite build && tsc -p tsconfig.electron.json --outDir dist/main && electron-builder" + "electron:dev": "cross-env NODE_ENV=development electron index.js", + "electron:build": "rm -rf dist && vite build && tsc -p tsconfig.electron.json && electron-builder" }, "dependencies": { "vue": "^3.0.5" @@ -28,7 +28,8 @@ "category": "your.app.category.type" }, "files": [ - "dist/**/*" + "dist/main/**/*", + "dist/render/**/*" ], "directories": { "output": "dist/release" diff --git a/src/main/app.ts b/src/main/app.ts index 380717c..91b7ed8 100644 --- a/src/main/app.ts +++ b/src/main/app.ts @@ -1,16 +1,19 @@ import { app, BrowserWindow } from 'electron' +import {join} from "path"; function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { - nodeIntegration: true + nodeIntegration: true, + preload: join(__dirname, 'preload.js') } }) if (process.env.NODE_ENV === 'development') { win.loadURL('http://localhost:3000/') + win.webContents.openDevTools() } else { win.loadFile('dist/render/index.html') } diff --git a/src/main/preload.js b/src/main/preload.js new file mode 100644 index 0000000..3e8408d --- /dev/null +++ b/src/main/preload.js @@ -0,0 +1,20 @@ +const {ipcRenderer, contextBridge} = require('electron') + +contextBridge.exposeInMainWorld('ipcRenderer', { + send: (channel, data) => { + // whitelist channels + let validChannels = ['toMain'] + if (validChannels.includes(channel)) { + ipcRenderer.send(channel, data) + } + ipcRenderer.send(channel, data) + }, + receive: (channel, func) => { + let validChannels = ['fromMain'] + if (validChannels.includes(channel)) { + // Deliberately strip event as it includes `sender` + ipcRenderer.on(channel, (event, ...args) => func(...args)) + } + ipcRenderer.on(channel, (event, ...args) => func(...args)) + } +}) \ No newline at end of file diff --git a/tsconfig.electron.json b/tsconfig.electron.json index 30f0acc..4af2166 100644 --- a/tsconfig.electron.json +++ b/tsconfig.electron.json @@ -5,9 +5,12 @@ "moduleResolution": "node", "strict": true, "resolveJsonModule": true, - "esModuleInterop": true + "esModuleInterop": true, + "allowJs": true, + "outDir": "dist/main" }, "include": [ - "src/main/app.ts" + "src/main/app.ts", + "src/main/preload.js", ] }