介绍 Electron Forge 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
- npm
yarn create electron-app my-app --template=webpack
cd my-app
yarn start
npm init electron-app@latest my-app -- --template=webpack
cd my-app
npm start
该脚本将在 my-app
文件夹中创建一个 Electron 项目,该项目具有完整的 JavaScript 打包功能和预配置的构建流程。
更多信息,请参阅 Forge 文档中的开始使用指南。
上述代码片段使用了 Forge 的Webpack 模板,我们推荐将其作为新 Electron 项目的起点。此模板基于 @electron-forge/plugin-webpack
插件构建,该插件以多种方式将 webpack 与 Electron Forge 集成,包括
- 使用 webpack-dev-server 增强本地开发流程,包括支持渲染进程中的 HMR;
- 在应用程序打包之前处理 webpack 包的构建逻辑;以及
- 在 webpack 打包过程中添加对原生 Node 模块的支持。
如果您需要 TypeScript 支持,请考虑使用Webpack + TypeScript 模板。
导入现有项目
Electron Forge CLI 还包含用于导入现有 Electron 项目的命令。
- Yarn
- npm
cd my-app
yarn add --dev @electron-forge/cli
yarn electron-forge import
cd my-app
npm install --save-dev @electron-forge/cli
npm exec --package=@electron-forge/cli -c "electron-forge import"
当您使用 import
命令时,Electron Forge 将添加一些核心依赖项并创建一个新的 forge.config.js
配置。如果您有任何现有的构建工具(例如 Electron Packager、Electron Builder 或 Forge 5),它将尝试迁移尽可能多的设置。您的一些现有配置可能需要手动迁移。
手动迁移详情可在 Forge 的导入文档中找到。如果您需要帮助,请加入我们的 Discord 服务器!
为什么要改用 Forge?
如果您已经拥有用于打包和发布 Electron 应用程序的工具,采用 Electron Forge 带来的好处仍然可能大于最初的切换成本。
我们认为使用 Forge 有两个主要好处
-
一旦 Electron 支持新的应用程序构建功能,Forge 就会立即集成。这样,您无需自己配置新的工具支持,也无需等待其他包最终实现该支持后再升级。近期示例包括 macOS 通用二进制文件和 ASAR 完整性检查。
-
Forge 的多包架构使其易于理解和扩展。 由于 Forge 由许多职责清晰的小型包组成,因此更容易追踪代码流程。此外,Forge 的可扩展 API 设计意味着您可以针对高级用例编写独立于现有配置选项的自定义构建逻辑。有关编写自定义 Forge 插件、makers 和 publishers 的更多详细信息,请参阅文档中的扩展 Electron Forge部分。
破坏性变更
Forge 6 经历了漫长的 beta 阶段,其发布节奏逐渐放缓。然而,我们在 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://forge.electron.js.cn 上的 Forge 文档提供反馈,我们有一个与 electron-forge/electron-forge-docs 仓库同步的 GitBook 实例。