浮之静

Electron 加密:项目初始化

这里采用官方脚手架 Electron Forge[1] 来搭建我们的项目。为什么选择 forge 呢,这也是我经过多维度比较后,选择出来的最佳方案。

Electron Forge

应用程序的打包和分发一直是在 Electron 核心框架之外进行处理。在 Electron 的早期,开发者常常手动编辑 Electron 二进制文件来准备应用的分发。从那时起,Electron 社区开发了丰富的工具生态来处理 Electron 应用分发的每一个任务,包括:

  • 应用打包(electron-packager)

  • 代码签名(例如 @electron/osx-sign)

  • 创建特定平台的安装程序(例如 electron-winstaller 或 electron-installer-dmg)

  • 原生 Node.js 模块重建(electron-rebuild)

  • 通用 macOS 构建(@electron/universal)

尽管这些单一用途的包都是成熟和生产就绪的,但应用开发者需要理解每一个工具的作用,并编写自己的脚本来将这些包整合到构建流水线中。这个过程需要研究和迭代,对 Electron 的新手来说可能会感到困惑。

而 Electron Forge 则是一个一体化解决方案,统一了其碎片化的生态系统。通过 Forge,你可以使用最少的配置创建一个从开发到分发的构建流水线。Forge 还考虑到了高级用例,你可以通过配置文件 forge.config.js 添加任何构建逻辑。

Forge VS Builder

Electron Forge 可以看作是 Builder 的替代方案,用于应用程序构建和发布。这两个项目之间的关键哲学差异在于,Electron Forge 专注于将现有的一方工具合并到一个构建流水线中,而 Builder 为大多数构建任务重写了自己的内部逻辑(很难与官方新特性快速对齐)。

所以使用 Forge 有两个主要优点:

  • Forge 支持 Electron 中新支持的应用程序构建功能(例如 ASAR 完整性或通用 macOS 构建),这些功能通常是以第一方 Electron 工具构建的,所以 Forge 在它们发布后立即就获得了。

  • Forge 的多包架构使其更容易理解和扩展。由于 Forge 由许多责任清晰的小包组成,因此更容易跟踪代码的流程。此外,其可扩展的 API 设计意味着你可以编写自己的构建逻辑,与高级用例提供的配置选项分开。

构建工具选择