版本发布流程

本地开发完成后

  • 修改 package.json 中的 version 字段(遵循语义化版本)

{
  "version": "1.2.0"  // 格式:主版本.次版本.修订号
}

打包生成安装文件

npm run build  # 生成 dist_electron 目录

产出文件示例:

dist_electron/
├── YourApp-1.2.0.exe       # Windows安装包
├── YourApp-1.2.0.dmg       # macOS安装包
└── latest.yml              # 更新元数据

创建 GitHub Release

  • 在仓库中创建标签(Tag):

git tag -a v1.2.0 -m "Release v1.2.0"
git push origin v1.2.0
  • 在 GitHub 网页端:

    1. 进入 Releases 页面

    2. 点击 "Draft a new release"

    3. 选择刚推送的标签(v1.2.0)

    4. 上传所有打包文件(.exe/.dmg/.yml等)

版本管理方式

方案

操作

适用场景

手动修改

直接编辑 package.jsonversion 字段

小型项目

命令行工具

使用 npm version patch/minor/major

推荐方案

CI自动化

通过 GitHub Actions 自动递增版本

企业级项目

推荐命令:

npm version patch  # 1.2.0 → 1.2.1
npm version minor  # 1.2.0 → 1.3.0 
npm version major  # 1.2.0 → 2.0.0

该命令会自动:

  1. 修改 package.json 版本号

  2. 创建 Git commit 和 tag

版本控制建议

  • 每次功能提交使用 minor 递增

  • 紧急修复使用 patch 递增

  • 重大架构变更使用 major 递增

electron-updater工作流程

配置文件示例 (vue.config.js)

module.exports = {
  pluginOptions: {
    electronBuilder: {
      builderOptions: {
        publish: ['github'],  // 自动发布到GitHub
        win: {
          target: 'nsis',
          publish: ['github'] // Windows特定配置
        },
        mac: {
          publish: ['github'] // macOS特定配置
        }
      }
    }
  }
}

自动化发布方案(推荐)

使用 GitHub Actions 自动化

创建 .github/workflows/release.yml:

name: Release
on:
  push:
    tags:
      - 'v*' # 匹配v开头的tag

jobs:
  build-and-release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      
      - name: Set Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '16'
      
      - name: Install dependencies
        run: npm install
      
      - name: Build and publish
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          npm run build
          npx electron-builder --publish always

触发发布

git commit -m "Add new feature"
npm version minor  # 自动升级版本号并创建tag
git push --follow-tags  # 推送代码和tag

GitHub Actions 会自动完成:

  1. 打包应用

  2. 创建 Release

  3. 上传所有文件