使用 electron-builder 打包 Electron 程序

简介: 在将 Electron 代码开发完成后,如果想要投入生产环境,那就必须经过很关键的一步——打包。

11.png


前言


在将 Electron 代码开发完成后,如果想要投入生产环境,那就必须经过很关键的一步——打包。


今天就将 MacOS 上使用 electron-builder 打包 Electron 应用的过程做一个记录。


为什么要打包


我上一篇文章《使用 VSCode 调试 Electron 主进程代码》介绍了在开发环境下运行 Electron 程序的方法,既然可以正常运行了,那为什么还需要经过打包的步骤呢?原因如下:


  1. 为了实现跨平台的目的


在打包之前,如果我将源码拷贝一份到其他操作系统(比如 windows)上,那要正常运行的话,必须在对应的系统上安装适配该系统的 Electron 执行程序。
为了减小跨平台的复杂度,我们需要针对各个不同的平台,将程序代码打包成适配平台的应用程序,达到直接使用的目的。


  1. 为了减小代码体积


一个最基本的 Electron 程序,其开发环境代码体积大约 170MB,因为有较多开发依赖(devDependencies),对于程序的传输极不友好。


可以通过打包的手段,排查掉众多开发依赖,精简应用代码体积。


环境



打包步骤


  1. 安装 electron-builder


mkdir electron-builder
cd electron-builder
yarn init -y
yarn add electron-builder -D


这里建议将 electron-builder 安装在单独的目录,方便复用。


  1. 添加打包指令(也可直接在终端执行)


// electron-quick-start/package.json
{
    "name": "myApp",
    ……
    "scripts": {
        ……
        "build": "../electron-builder/node_modules/.bin/electron-builder"
    },
    ……
}


执行 npm run build 之后,终端信息如下:


> Executing task: npm run build <
> myApp@1.0.0 build
> ../electron-builder/node_modules/.bin/electron-builder
  • electron-builder  version=22.14.5 os=19.6.0
  • writing effective config  file=dist/builder-effective-config.yaml
  • packaging       platform=darwin arch=x64 electron=16.0.6 appOutDir=dist/mac
  • default Electron icon is used  reason=application icon is not set
  • skipped macOS application code signing  reason=cannot find valid "Developer ID Application" identity or custom non-Apple code signing certificate, see https://electron.build/code-signing allIdentities=     0 identities found
                                                Valid identities only
     0 valid identities found
  • building        target=macOS zip arch=x64 file=dist/myApp-1.0.0-mac.zip
  • building        target=DMG arch=x64 file=dist/myApp-1.0.0.dmg
  • building block map  blockMapFile=dist/myApp-1.0.0.dmg.blockmap
  • building block map  blockMapFile=dist/myApp-1.0.0-mac.zip.blockmap


electron-quick-start 下生成的 dist 文件夹,其文件结构如下:


./dist
├── builder-debug.yml
├── builder-effective-config.yaml
├── latest-mac.yml
├── mac
│   └── myApp.app
├── myApp-1.0.0-mac.zip
├── myApp-1.0.0-mac.zip.blockmap
├── myApp-1.0.0.dmg
└── myApp-1.0.0.dmg.blockmap


  1. 打包配置


可根据自己的需要,在 package.json 中增加配置项。


// electron-quick-start/package.json
{
    "name": "myApp",
    ……
    "scripts": {
        ……
        "build": "../electron-builder/node_modules/.bin/electron-builder"
    },
    ……
    "build": {
        "productName": "myFirstApp",    // 指定打包成的程序名称,可包含空格
        "appId": "bianchengsanmei",
        "directories": {
            "output": "build" // 指定打包程序的输出目录
        },
        "mac": {
            "target": "dmg"
        },
        "dmg": {
            "backgroundColor": "#fff"
        }
    }
}


具体相关配置可查看 electron-builder 官方文档


打包前后体积比较


开发环境总体积:


12.png


打包生成的 .dmg 安装包体积:


13.png


可以看到,通过打包,使得程序体减少了一大半。


总结


以上就是一次简单的 Electron 应用打包过程,希望能够对你有所帮助。


~ 本文完,感谢阅读!


学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!


你来,怀揣期望,我有墨香相迎! 你归,无论得失,唯以余韵相赠!


知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!




相关文章
|
1月前
|
资源调度 运维 JavaScript
使用electron创建桌面应用及常见打包错误解决
使用electron创建桌面应用及常见打包错误解决
234 3
|
1月前
|
前端开发 Unix Linux
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
本文详细介绍了 `electron-builder` 在 Linux 平台上如何打包 Electron 应用程序,涵盖了 AppImage、Flatpak、Snap 等多种格式的打包原理和具体实现。文章从初始化 `LinuxPackager` 到创建各种目标格式的包,详细解析了每个步骤的代码逻辑和关键方法,帮助开发者更好地理解和使用 `electron-builder` 进行 Linux 应用的打包。
88 2
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
|
5月前
|
资源调度 JavaScript 前端开发
IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端的技术实践
这次借着论证 Web IM端 SDK 是否可以在 Electron 生成的桌面端正常稳定使用,我决定把官方新推出的 webim-vue3-demo,打包到桌面端,并记录了这次验证的过程以及所遇到的问题和解决方法。
95 2
|
1月前
|
安全 前端开发 iOS开发
揭秘 electron-builder:macOS 应用打包背后到底发生了什么?
本文详细介绍了 Electron 应用在 macOS 平台上的打包流程,涵盖配置文件、打包步骤、签名及 notarization 等关键环节。通过剖析 `electron-builder` 的源码,展示了如何处理多架构应用、执行签名,并解决常见问题。适合希望深入了解 macOS 打包细节的开发者。
53 2
|
1月前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
142 0
|
3月前
|
iOS开发 MacOS Python
Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决方法
Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决方法
|
4月前
|
JavaScript 网络安全 iOS开发
如何用 Electron 打包chatgpt-plus.top并生成mac客户端
如何用 Electron 打包chatgpt-plus.top并生成mac客户端
53 0
|
4月前
|
JavaScript 区块链
从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件
从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件
57 0
|
6月前
|
Linux Windows
教你在Linux上安装Node并用Electron打包deb和rpm包
教你在Linux上安装Node并用Electron打包deb和rpm包
381 9
|
6月前
|
前端开发 数据可视化 iOS开发
基于electron快速将任意网站打包成跨平台的桌面端软件
基于electron快速将任意网站打包成跨平台的桌面端软件
226 1