在 Linux 系统下使用 Electron 打包 ram 版和 doctor 版,推荐以下两种主流方案:
方案一:使用 electron-builder(推荐)
步骤:
-
安装依赖
npm install electron-builder --save-dev -
配置 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/**/*"] } ] } } } -
打包命令
# 打包 ram 版 electron-builder build --config.name ram-edition --linux # 打包 doctor 版 electron-builder build --config.name doctor-edition --linux
方案二:使用 electron-packager
步骤:
-
安装依赖
npm install electron-packager --save-dev -
创建打包脚本(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" } } -
执行打包
npm run pack:ram # 打包 ram 版 npm run pack:doctor # 打包 doctor 版
关键区别说明
| 特性 | electron-builder | electron-packager |
|---|---|---|
| 多版本支持 | 通过配置直接管理 | 需手动控制文件包含/排除 |
| 打包格式 | 支持 AppImage/snap/deb 等 | 仅支持基础打包 |
| 自动更新 | 内置支持 | 需自行实现 |
| 复杂度 | 配置较复杂但功能全面 | 简单但灵活性较低 |
扩展建议
-
图标与元数据
在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" } ] -
环境变量控制逻辑
在代码中通过process.env.npm_config_name读取版本标识:const edition = process.env.npm_config_name || 'default'; if (edition === 'doctor-edition') { enableDoctorFeatures(); } -
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 以获得更专业的打包体验和自动更新支持。