10 【Vite + Vue3 + Electron 创建打包桌面程序】
1.使用 Vite 构建 Electron 项目
Section titled “1.使用 Vite 构建 Electron 项目”1.1 创建 Vite 应用,安装 Electron 依赖
Section titled “1.1 创建 Vite 应用,安装 Electron 依赖”创建一个 Vite 项目
安装 Electron 相关依赖
1.2 在 vite.config.ts 中,配置 Electron 入口文件
Section titled “1.2 在 vite.config.ts 中,配置 Electron 入口文件”
根据上方官网提示,创建 electron/main/index.ts,与 src 目录同级

配置 Electron 入口文件 —— 打开 vite.config.ts,引入 electron/main/index.ts
这么配置,就启动一个 Vite 应用就行。
1.3 编写 electron / index.ts
Section titled “1.3 编写 electron / index.ts”1.3.1 app、BrowserWindow
Section titled “1.3.1 app、BrowserWindow”在 electron 依赖中,可以引入 app、BrowserWindow:
- app 控制应用程序的事件生命周期(相当于应用程序)
- BrowserWindow 创建并控制浏览器窗口(相当于打开桌面弹框)
实例化 BrowserWindow 对象,创建一个窗口,在内部通过 nodeIntegration、contextIsolation 集成网页和 Node.js(也就是在渲染进程中,可以调用 Node.js 方法)
1.3.2 使用 win.loadURL 加载窗口 / Vite 环境变量
Section titled “1.3.2 使用 win.loadURL 加载窗口 / Vite 环境变量”使用 win.loadURL 加载窗口,接收的网址是指:Vite 启动后,会在本地运行一个服务,把这个服务网址丢进去就行
- 使用 Vite 自带的环境变量 VITE_DEV_SERVER_HOST
- 如果是 undefined,就换成 VITE_DEV_SERVER_HOSTNAME(现在应该采用这个了)
- ps:在 Vite 3.2.41中,使用 VITE_DEV_SERVER_URL 表示 Vite 服务器本地路径
关于 Vite 环境变量,可以去终端看下

1.3.3 使用 app.whenReady() 初始化app
Section titled “1.3.3 使用 app.whenReady() 初始化app”最后,使用 app.whenReady() 初始化app(在 Electron 完成初始化时触发)
初始化完成后,再挂载上面创建的 桌面应用程序窗口
1.3.4 整理 electron/main/index.ts
Section titled “1.3.4 整理 electron/main/index.ts”- 开发环境下,我们访问的是 Vite 本地服务
- 打包之后,我们访问的是 dist 静态文件
要修改 win.loadURL 中的路径参数,判断下当前是生产环境,还是开发环境
在 electron/main/index.ts中,写入下方代码
1.4 配置 package json,运行项目
Section titled “1.4 配置 package json,运行项目”1.4.1 运行项目后,出现的两个报错
Section titled “1.4.1 运行项目后,出现的两个报错”启动项目后,出现下面两个报错


综上所述,需要在 package.json 中,增加 main 字段,去掉 type 字段
1.4.2 开发环境运行效果
Section titled “1.4.2 开发环境运行效果”运行项目 npm run dev

2.打包 Electron 桌面程序
Section titled “2.打包 Electron 桌面程序”3.1 安装打包依赖,调整打包命令
Section titled “3.1 安装打包依赖,调整打包命令”安装打包依赖 electron-builder
安装完成后,在 package json 中,配置 build 命令
"build": "vue-tsc --noEmit && vite build && electron-builder",
3.2 增加 electron-builder 相关配置
Section titled “3.2 增加 electron-builder 相关配置”appId、productName… —— 应用基本信息信息
win、mac —— 不同类型设备配置
nsis—— 桌面应用程序安装过程的配置
在根目录配置electron-builder.json5
3.3 nsis(桌面应用程序安装过程)配置一览
Section titled “3.3 nsis(桌面应用程序安装过程)配置一览”3.4 执行打包,安装应用
Section titled “3.4 执行打包,安装应用”npm run build
打包成功后,生成的文件都放到了 release 目录下(之前是这么配置的)
双击 exe 结尾的文件,就能运行桌面应用程序了

3.5 主进程接收渲染进程消息时,在控制台输出乱码
Section titled “3.5 主进程接收渲染进程消息时,在控制台输出乱码”加上 chcp 65001 输出中文
加上 cross-env NODE_ENV=development 实现自定义开发时的环境变量
最终 dev 命令如下:
4.实现 渲染进程 / 主进程 通信(IPC)
Section titled “4.实现 渲染进程 / 主进程 通信(IPC)”4.1 让 Vite 支持 ipcRenderer
Section titled “4.1 让 Vite 支持 ipcRenderer”使用 ipcRenderer 进行通信
默认情况下,Vite 不支持 ipcRenderer,得安装插件 vite-plugin-electron-renderer 让他支持,同时安装了 vite-plugin-electron-renderer。
修改 vite.config.ts
这样,就实现了让 Vite 支持 ipcRenderer
4.2 渲染进程发送消息,主进程接收消息
Section titled “4.2 渲染进程发送消息,主进程接收消息”渲染进程使用 ipcRenderer.send() 发送消息
在 vue 文件中,添加一个按钮,点击后通过 ipcRenderer 给主进程发消息
主进程使用 ipcMain.on() 接收消息
在electron/ main/index.ts文件中,引入 ipcMain,监听.vue文件发出的消息