用途:提供使用 React、TypeScript 和 Vite 构建生产级 Electron 桌面应用的模式与实践,涵盖 IPC、窗口/托盘、PTY 终端、WebRTC 与打包。
主要能力:
- 安全基线:Electron 28+ 默认 contextIsolation 与 sandbox 为 true,建议显式设置 contextIsolation、sandbox、nodeIntegration:false、webSecurity:true 并配置 preload;主进程需校验每条 IPC 消息。
- Electron Fuses 与 ASAR 完整性:启用 EnableEmbeddedAsarIntegrityValidation 与 OnlyLoadAppFromAsar,需 @electron/asar 3.1.0+,electron-builder 通过 electronFuses 配置。
- 渲染端风险:preload 仅通过 contextBridge.exposeInMainWorld 暴露窄接口,不直接暴露 ipcRenderer;限制导航与 setWindowOpenHandler;校验 shell.openExternal 的 URL scheme。
- 架构:给出 app/electron 与 src 目录结构、IPC 通信模式(ipcMain.handle、webContents.send、preload 桥接、React 调用)。
- 系统集成:系统托盘(Tray、Menu、nativeImage)、全局快捷键(globalShortcut,含冲突检测与退出注销)。
- PTY 终端:使用 node-pty 生成 shell,处理 data、write、resize。
- 音频与 WebRTC:getUserMedia 录音、MediaRecorder;PeerJS 接听/拨打电话,replaceTrack 实现屏幕共享。
- 打包:electron-builder.yml 配置 Windows NSIS、macOS DMG(hardenedRuntime、entitlements、notarize)、Linux AppImage、GitHub 发布与 extraResources。
- 常见陷阱:异步回调中的过期闭包用 ref 解决;BrowserView 已弃用,改用 WebContentsView;跨平台 shell 检测。
使用方式:开发命令 npm run electron:dev,生产构建 npm run electron:build,本地运行 npx electron dist/,打包 npm run package。macOS 公证需设置 APPLE_ID、APPLE_APP_SPECIFIC_PASSWORD、APPLE_TEAM_ID;Windows 签名读取 CSC_LINK 与 CSC_KEY_PASSWORD。
适用场景:需要构建带系统托盘、终端、音视频通话等能力的跨平台 Electron 桌面应用。
限制:资料未提供具体版本兼容矩阵、性能数据或收费信息;部分配置需按实际项目调整。