總覽

如何設定 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 Forge 的建置過程中,於 @electron/packager封裝 步驟中傳送的選項

此設定可讓您自訂 @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 文件中。

您無法覆寫 dirarchplatformoutelectronVersion 選項,因為它們是由 Electron Forge 內部設定的。

如果您想為任何建置命令(封裝、製作或發佈)指定平台/架構組合,您可以使用 Forge CLI 指定 --arch--platform 旗標(例如 npm run make --arch=arm64)。

有關更多詳細資訊,請參閱建置命令文件。

Electron Rebuild 設定

設定物件上的最上層屬性 rebuildConfig 會直接對應到在 Electron Forge 的 封裝啟動 命令期間傳送至 @electron/rebuild 的選項。

此設定可讓您自訂 Electron Forge 如何針對您的應用程式的 Electron 版本中捆綁的 Node.js 版本重新建置專案的原生 Node.js 模組

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

您可以在此物件中放置的選項記錄在Electron Rebuild API 文件中。

@electron/rebuild 所需的 buildPathelectronVersion 選項由 Forge 預先設定。選用的 arch 選項也將由 Forge 內部覆寫。

製造器

設定物件上的最上層 makers 屬性是製造器設定的陣列。每個製造器都會在 製作 步驟中,為您的封裝應用程式產生可發佈的成品(例如,Windows 上的Squirrel.Windows 或 macOS 上的 DMG)。

查看製造器文件,了解所有官方製造器及其設定選項,並查看編寫製造器指南,以實作您自己的製作步驟建置目標。

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

配置物件上的頂層屬性 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 建置。這可讓您非常輕鬆地製作共用配置,因為只需要用此函式包裝變更的值。

上次更新時間