跳转到主要内容

Electron Forge 6 介绍

·6 分钟阅读

我们很高兴地宣布 Electron Forge v6.0.0 现已发布!这是 Forge 自 2018 年以来的第一个主要版本,并将项目从 electron-userland 迁移到 Github 上的主要 electron 组织。

请继续阅读,了解有哪些新功能以及您的应用程序如何采用 Electron Forge!

什么是 Electron Forge?

Electron Forge 是一个用于打包和分发 Electron 应用程序的工具。它将 Electron 的构建工具生态系统统一到一个可扩展的接口中,让任何人都可以直接上手制作 Electron 应用程序。

主要功能包括

  • 📦 应用程序打包和代码签名
  • 🚚 在 Windows、macOS 和 Linux 上的可定制安装程序(DMG、deb、MSI、PKG、AppX 等)
  • ☁️ 针对云提供商(GitHub、S3、Bitbucket 等)的自动化发布流程
  • ⚡️ 易于使用的 webpack 和 TypeScript 模板
  • ⚙️ 支持原生 Node.js 模块
  • 🔌 可扩展的 JavaScript 插件 API
延伸阅读

访问 为什么选择 Electron Forge 说明文档,了解更多关于 Forge 的理念和架构。

v6 有哪些新功能?

完全重写

从 v1 到 v5,Electron Forge 都基于现已停止维护的 electron-compile 项目。Forge 6 是该项目的完全重写,采用了新的模块化架构,可以扩展以满足任何 Electron 应用程序的需求。

在过去几年中,Forge v6.0.0-beta 已经实现了与 v5 的功能对等,并且代码变动已大幅减缓,使得该工具已准备好被广泛采用。

不要安装错误的软件包

对于版本 5 及以下,Electron Forge 发布在 npm 上的 electron-forge 包中。从 v6 重写开始,Forge 被构造成一个包含许多小型项目的 monorepo 项目。

官方支持

过去,Electron 的维护者对构建工具没有明确的立场,将这项任务留给了各种社区软件包。然而,随着 Electron 项目的成熟,新的 Electron 开发者越来越难以理解他们需要哪些工具来构建和分发他们的应用程序。

为了帮助 Electron 开发者在分发过程中得到指导,我们决定将 Forge 作为 Electron 官方的、功能完备的构建流程

在过去一年中,我们一直在将 Forge 逐步整合到官方 Electron 文档中,并且最近已将 Forge 从其旧地址 electron-userland/electron-forge 迁移到 electron/forge 仓库。现在,我们终于准备好向公众发布 Electron Forge 了!

入门

初始化一个新的 Forge 项目

可以使用 create-electron-app CLI 脚本来搭建一个新的 Electron Forge 项目。

yarn create electron-app my-app --template=webpack
cd my-app
yarn start

该脚本将在 my-app 文件夹中创建一个 Electron 项目,其中包含完整的 JavaScript 打包和预配置的构建流程。

更多信息,请参阅 Forge 文档中的入门指南

一流的 webpack 支持

上述代码片段使用了 Forge 的 Webpack 模板,我们建议将其作为新 Electron 项目的起点。此模板围绕 @electron-forge/plugin-webpack 插件构建,该插件以多种方式将 webpack 与 Electron Forge 集成,包括

  • 通过 webpack-dev-server 增强本地开发流程,包括支持渲染器中的 HMR;
  • 在应用程序打包前处理 webpack 包的构建逻辑;以及
  • 在 webpack 打包过程中增加对原生 Node 模块的支持。

如果您需要 TypeScript 支持,可以考虑使用 Webpack + TypeScript 模板

导入现有项目

Electron Forge CLI 还包含一个用于现有 Electron 项目的导入命令。

cd my-app
yarn add --dev @electron-forge/cli
yarn electron-forge import

当你使用 import 命令时,Electron Forge 将添加一些核心依赖项并创建一个新的 forge.config.js 配置。如果你有任何现有的构建工具(例如 Electron Packager、Electron Builder 或 Forge 5),它将尝试尽可能多地迁移设置。你的一些现有配置可能需要手动迁移。

手动迁移的详细信息可以在 Forge 的 导入文档 中找到。如果你需要帮助,请访问 我们的 Discord 服务器

为什么要切换到 Forge?

如果您已经有用于打包和发布 Electron 应用程序的工具,采用 Electron Forge 所带来的好处仍然可能超过初始的转换成本。

我们认为使用 Forge 有两大好处

  1. Forge 在 Electron 支持新功能后,会立即获得这些功能以用于应用程序构建。在这种情况下,你无需自己连接新的工具支持,也无需等待其他软件包最终实现该支持后再升级。最近的示例包括 macOS 通用二进制文件ASAR 完整性检查

  2. Forge 的多软件包架构使其易于理解和扩展。由于 Forge 由许多职责明确的小型软件包组成,因此更容易理解代码流程。此外,Forge 的可扩展 API 设计意味着你可以编写自己的附加构建逻辑,与提供的配置选项分开,以用于高级用例。有关编写自定义 Forge 插件、创建器和发布器的更多详细信息,请参阅文档的 扩展 Electron Forge 部分。

破坏性变更

Forge 6 已经经历了很长的测试阶段,其发布节奏也逐渐放缓。然而,我们在 2022 年下半年加快了开发速度,并利用最后几个版本推出了 v6.0.0 稳定版之前的一些最终破坏性更改。

如果你是 Electron Forge 6 Beta 用户,请参阅 v6.0.0 GitHub 发布说明,了解最近 Beta 版(>=6.0.0-beta.65)中进行的破坏性更改列表。

完整的更改和提交列表可以在仓库的 CHANGELOG.md 中找到。

提交您的反馈!

告诉我们您的需求!Electron Forge 团队一直致力于改进项目,以更好地满足用户的需求。

你可以通过提交功能请求、发布 问题,或者只是告诉我们你的反馈来帮助我们改进 Electron Forge!你还可以加入 官方 Electron Discord 服务器,其中有一个专门用于 Electron Forge 讨论的频道。

如果你想对 https://electronforge.cn 上的 Forge 文档提供任何反馈,我们有一个 GitBook 实例,它已同步到 electron-forge/electron-forge-docs 仓库。