// and load the index.html of the app. if (isDev) { mainWindow.loadURL('http://localhost:5173');// Open the DevTools. mainWindow.webContents.openDevTools(); } else { mainWindow.loadFile(join(__dirname, '../index.html')); } // mainWindow.loadURL( //this doesn't work on macOS in build and preview mode // isDev ? // 'http://localhost:3000' : // join(__dirname, '../../index.html') // ); }
// This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.whenReady().then(() => { createWindow() app.on('activate', function () { // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) createWindow() }) });
// Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } });
在同一目录下添加preload.ts文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// All of the Node.js APIs are available in the preload process. // It has the same sandbox as a Chrome extension. import { contextBridge, ipcRenderer } from 'electron' window.addEventListener('DOMContentLoaded', () => { const replaceText = (selector: any, text: any) => { const element = document.getElementById(selector) if (element) element.innerText = text }
for (const dependency of ['chrome', 'node', 'electron']) { replaceText(`${dependency}-version`, process.versions[dependency]) } })