概述

如何配置 Electron Forge

Electron Forge 的配置集中在一个单独的配置对象中。你可以在你的 `package.json` 文件的 `config.forge` 属性中指定此配置。此属性可以采用以下两种形式之一

  • 包含整个 Forge 配置的对象。

  • 指向导出你的配置的 JavaScript 文件的相对路径。

如果你没有在你的 `package.json` 文件中设置 `config.forge`,Forge 将尝试在你的项目根目录中找到一个 `forge.config.js` 文件。

forge.config.js
module.exports = {
  packagerConfig: {},
  makers: [
    {
      name: '@electron-forge/maker-zip'
    }
  ]
};

我们建议使用 JavaScript 作为你的配置文件,因为它允许你在你的配置中使用条件逻辑。

配置选项

module.exports = {
  packagerConfig: { /* ... */ },
  rebuildConfig: { /* ... */ },
  makers: [],
  publishers: [],
  plugins: [],
  hooks: { /* ... */ },
  buildIdentifier: 'my-build'
};

Forge 配置中的所有属性都是可选的。使用其中一个内置模板初始化你的项目将包含一些默认的推荐配置选项。

Electron Packager 配置

配置对象中的顶级属性 `packagerConfig` 会直接映射到发送到 @electron/packager 的选项,在 Electron Forge 的构建过程的 打包 步骤中。

此配置允许你自定义 @electron/packager 如何将你的基于 Electron 的应用程序源代码打包成一个可供分发的应用程序。

forge.config.js
module.exports = {
  packagerConfig: {
    name: 'My Electron App',
    asar: true,
    osxSign: {},
    appCategoryType: 'public.app-category.developer-tools'
  }
};

你可以在此对象中使用的选项在 Electron Packager API 文档 中有说明。

你不能覆盖 `dir`、`arch`、`platform`、`out` 或 `electronVersion` 选项,因为它们是由 Electron Forge 在内部设置的。

如果你想为任何构建命令(打包、生成或发布)指定平台/架构组合,可以使用 Forge CLI 指定 `--arch` 和 `--platform` 标志(例如 `npm run make --arch=arm64`)。

有关更多详细信息,请参阅 构建命令 文档。

Electron Rebuild 配置

配置对象中的顶级属性 `rebuildConfig` 会直接映射到发送到 @electron/rebuild 的选项,在 Electron Forge 中的 打包启动 命令期间。

此配置允许你自定义 Electron Forge 如何根据应用程序 Electron 版本中捆绑的 Node.js 版本重新构建项目的 原生 Node.js 模块

forge.config.js
module.exports = {
  rebuildConfig: {
    force: true
  }
};

你可以在此对象中使用的选项在 Electron Rebuild API 文档 中有说明。

`buildPath` 和 `electronVersion` 是 `@electron/rebuild` 的必需选项,由 Forge 预先配置。可选的 `arch` 选项也将由 Forge 在内部覆盖。

生成器

配置对象中的顶级 `makers` 属性是一个生成器配置数组。每个生成器将在 生成 步骤中为你的打包应用程序生成一个可分发的工件(例如,在 Windows 上使用 Squirrel.Windows 或在 macOS 上使用 DMG)。

查看构建器 (Makers) 文档以了解所有官方构建器及其配置选项,以及编写构建器 指南以实现您自己的构建步骤目标。

forge.config.js
module.exports = {
  makers: [
    {
      name: '@electron-forge/maker-zip',
      platforms: ['darwin']
    }
  ]
};

发布器

配置对象中的顶级属性 publishers 是一个发布器配置数组。每个发布器都为您的可分发文件提供一个发布目标(例如,GitHubS3)。

查看发布器 文档以了解所有官方发布器及其配置选项,以及编写发布器 指南以实现您自己的自定义发布目标。

forge.config.js
module.exports = {
  publishers: [
    {
      name: '@electron-forge/publisher-github',
      config: {
        repository: {
          owner: 'electron',
          name: 'fiddle'
        },
        draft: true,
        prerelease: false,
        generateReleaseNotes: true
      }
    }
  ]
};

插件

配置对象中的顶级属性 plugins 是一个插件配置数组。Electron Forge 插件可以挂钩到其生命周期的任何点并提供额外的功能(例如,Webpack 插件 将 webpack 打包集成到构建生命周期中,而Electronegativity 插件 将识别应用程序中的安全反模式)。

查看插件 文档以了解所有可能的插件及其配置选项,以及编写插件 指南以实现您自己的自定义 Forge 插件。

钩子

配置对象中的顶级属性 hooks 是一个包含挂钩的对象,可用于在构建生命周期 中插入自定义逻辑。

查看挂钩 文档以了解所有可能的挂钩及其配置选项。

构建标识符

此属性可用于识别不同的构建配置。通常,此属性设置为构建将发布到的渠道或其他唯一标识符。例如,常见的值是 prodbeta。此标识符可以与 fromBuildIdentifier 函数结合使用以生成特定于发布渠道或环境的配置。例如

forge.config.js
const { utils: { fromBuildIdentifier } } = require('@electron-forge/core');

module.exports = {
  buildIdentifier: process.env.IS_BETA ? 'beta' : 'prod',
  packagerConfig: {
    appBundleId: fromBuildIdentifier({ beta: 'com.beta.app', prod: 'com.app' })
  }
};

在此示例中,传递给 Electron Packager 的 appBundleId 选项将根据 buildIdentifier 选择,具体取决于您是构建 prod 版本还是 beta 版本。这使您可以非常轻松地创建共享配置,因为只需要将更改的值包装在此函数中即可。

上次更新