在 Linux 系统下使用 Electron 打包 ram 版和 doctor 版

276 阅读1分钟

在 Linux 系统下使用 Electron 打包 ram 版和 doctor 版,推荐以下两种主流方案:


方案一:使用 electron-builder(推荐)

步骤:

  1. 安装依赖

    npm install electron-builder --save-dev
    
  2. 配置 package.json

    {
      "build": {
        "linux": {
          "target": ["AppImage", "snap"],  # 可选格式:AppImage/snap/deb/rpm等
          "configurations": [
            {
              "name": "ram-edition",       # 版本标识
              "asar": true,                # 是否打包为 asar
              "files": ["dist/**/*", "src/**/*", "!src/doctor-only/**/*"]  # 包含/排除文件
            },
            {
              "name": "doctor-edition",
              "asar": true,
              "files": ["dist/**/*", "src/**/*", "src/doctor-only/**/*"]
            }
          ]
        }
      }
    }
    
  3. 打包命令

    # 打包 ram 版
    electron-builder build --config.name ram-edition --linux
    
    # 打包 doctor 版
    electron-builder build --config.name doctor-edition --linux
    

方案二:使用 electron-packager

步骤:

  1. 安装依赖

    npm install electron-packager --save-dev
    
  2. 创建打包脚本(package.json)

    {
      "scripts": {
        "pack:ram": "electron-packager . --platform=linux --out=out --name=ram-edition --ignore=src/doctor-only",
        "pack:doctor": "electron-packager . --platform=linux --out=out --name=doctor-edition"
      }
    }
    
  3. 执行打包

    npm run pack:ram    # 打包 ram 版
    npm run pack:doctor # 打包 doctor 版
    

关键区别说明

特性electron-builderelectron-packager
多版本支持通过配置直接管理需手动控制文件包含/排除
打包格式支持 AppImage/snap/deb 等仅支持基础打包
自动更新内置支持需自行实现
复杂度配置较复杂但功能全面简单但灵活性较低

扩展建议

  1. 图标与元数据
    build 配置中添加不同版本的图标和元数据:

    "configurations": [
      {
        "name": "ram-edition",
        "icon": "build/icons/ram.png",
        "buildVersion": "1.0.0-ram"
      },
      {
        "name": "doctor-edition",
        "icon": "build/icons/doctor.png",
        "buildVersion": "1.0.0-doctor"
      }
    ]
    
  2. 环境变量控制逻辑
    在代码中通过 process.env.npm_config_name 读取版本标识:

    const edition = process.env.npm_config_name || 'default';
    if (edition === 'doctor-edition') {
      enableDoctorFeatures();
    }
    
  3. CI/CD 集成
    可在 GitHub Actions/GitLab CI 中添加多版本打包任务:

    - name: Build RAM Edition
      run: npm run build -- --config.name ram-edition --linux
    - name: Build Doctor Edition
      run: npm run build -- --config.name doctor-edition --linux
    

建议优先使用 electron-builder 以获得更专业的打包体验和自动更新支持。