如何实现electron-packager构建的Electron应用自动化更新?
Electron主进程代码修改后的自动化构建与更新方案
方案一:用GitHub Actions实现CI/CD自动化(适配GitHub Release更新)
直接在项目里配置GitHub Actions工作流,每次修改代码推送后自动完成编译、构建、发布全流程:
- 在项目根目录创建
.github/workflows/build.yml文件,写入以下配置:
name: Electron Build & Release on: push: branches: [main] # 推送到main分支时自动构建 tags: ['v*'] # 打版本tag时自动发布到Release jobs: build: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: 配置Node.js环境 uses: actions/setup-node@v4 with: node-version: 20 # 换成你项目用的Node版本 - name: 安装依赖 run: npm install - name: 编译TypeScript(main.ts转js) run: npm run build # 假设你package.json里有build脚本,比如tsc - name: 构建Electron应用生成exe run: npm run make # 假设用electron-forge/builder的make命令,按需调整 - name: 发布到GitHub Releases uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: files: out/make/squirrel.windows/x64/*.exe # 换成你的exe实际输出路径 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- 配置完成后,每次往main分支push代码,Actions会自动构建;打版本tag(比如
v1.0.1)推送时,会自动把exe上传到GitHub Releases,配合你现有的自动更新逻辑就能拉取新版本。
方案二:本地自动化脚本(开发阶段快速迭代)
写一个简单脚本,监听main.ts变化自动触发构建,不用每次手动敲命令:
- 如果你用Windows,创建
auto-build.bat:
@echo off echo 正在编译TypeScript... npm run build echo 正在构建Electron应用... npm run make echo 构建完成!exe文件路径:out/make/squirrel.windows/x64/
双击运行脚本,就能一次性完成编译+构建。
- 想要实时监听文件变化自动构建,安装
chokidar依赖:npm install chokidar --save-dev,然后创建watch-build.js:
const chokidar = require('chokidar'); const { execSync } = require('child_process'); // 监听main.ts及其所在目录的文件变化 const watcher = chokidar.watch('./src/main.ts', { persistent: true }); watcher.on('change', (filePath) => { console.log(`文件 ${filePath} 已修改,开始自动构建...`); try { // 同步执行编译+构建命令,输出实时打印 execSync('npm run build && npm run make', { stdio: 'inherit' }); console.log('✅ 自动构建完成!'); } catch (err) { console.error('❌ 构建失败:', err.message); } }); console.log('🔍 已启动文件监听,等待main.ts修改...');
运行node watch-build.js,之后修改main.ts保存后就会自动触发构建。
方案三:优化更新策略(减少全量构建的必要性)
如果只是修改主进程的业务逻辑,可以尝试把非核心逻辑抽离到asar包外的脚本文件,通过require动态加载,这样修改这部分逻辑时不需要重新构建整个exe,只需要替换脚本文件即可。不过如果必须修改main.ts本身,还是得全量构建,但自动化流程能帮你省掉手动操作的麻烦。
内容的提问来源于stack exchange,提问作者Rodsps
相关产品推荐
相关产品推荐

