Appearance
概述
如何配置 Electron Forge
Electron Forge 配置集中在单个配置对象中。您可以package.json中的config.forge
属性指定此配置。此属性可以采用以下两种形式之一:
- 包含整个 Forge 配置的对象。
- 指向导出配置的 JavaScript 文件的相对路径。
如果你没有在 package.json 文件中设置config.forge
,Forge 将尝试在你的项目根目录中查找一个文件forge.config.js
。
js
module.exports = {
packagerConfig: {},
makers: [
{
name: '@electron-forge/maker-zip'
}
]
};
json
{
"name": "my-app",
"version": "0.0.1",
"config": {
"forge": {
"packagerConfig": {},
"makers": [
{
"name": "@electron-forge/maker-zip"
}
]
}
}
}
TIP
我们建议将 JavaScript 用于您的配置文件,因为它会在您的配置中启用条件逻辑。
配置选项
js
module.exports = {
packagerConfig: { /* ... */ },
rebuildConfig: { /* ... */ },
makers: [],
publishers: [],
plugins: [],
hooks: { /* ... */ },
buildIdentifier: 'my-build'
};
json
// Only the relevant section of package.json is shown, for brevity.
{
"config": {
"forge": {
"packagerConfig": { ... },
"rebuildConfig": { ... },
"makers": [ ... ],
"publishers": [ ... ],
"plugins": [ ... ],
"hooks": { ... },
"buildIdentifier": "my-build"
}
}
}
TIP
Forge 配置中的所有属性都是可选的。使用其中一个内置模板初始化项目将包含一些默认的推荐配置选项。
Electron Packager 配置
配置对象上的 top level 属性直接映射到发送到packagerConfig``@electron/packager
在 Electron Forge 构建过程的 Package 步骤中
此配置允许您自定义如何@electron/packager
基于 Electron 的应用程序源代码捆绑到打包的应用程序中以备分发。
forge.config.js
js
module.exports = {
packagerConfig: {
name: 'My Electron App',
asar: true,
osxSign: {},
appCategoryType: 'public.app-category.developer-tools'
}
};
您可以放入此对象的选项记录在 Electron Packager API 文档中。
TIP
您不能覆盖 dir
、arch
、platform
、out
、electron
、Version
选项,因为它们是由 Electron Forge 内部设置的
如果要为任何构建命令(Package、Make 或 Publish)指定架构/平台组合,则可以使用Forge CLI 指定 --arch
和--platform
标记(例如 npm run make --arch=arm64
)
有关更多详细信息,请参阅 Build commands 文档。
Electron Rebuild 配置
配置对象上的 top level 属性直接映射到发送到rebuildConfig@electron/rebuild在 Electron Forge 中的 Package 和 Start 命令中。
此配置允许您自定义 Electron Forge 如何根据应用程序的 Electron 版本中捆绑的 Node.js 版本重新构建项目的原生 Node.js 模块。
forge.config.js
js
module.exports = {
rebuildConfig: {
force: true
}
};
您可以放入此对象的选项记录在 Electron Rebuild API 文档中。
TIP
Forge预先配置了@electron/rebuild
所需的buildPath
和electronVersion
选项。可选的arch
选项也将被Forge内部覆盖。
Makers
配置对象上的顶级属性makers
是 Maker 配置的数组。每个制作者都会在 Make 步骤中为打包的应用程序生成一个可分发的项目(例如 Windows 上的 Squirrel.Windows 或 macOS 上的 DMG)
查看所有官方制作者及其配置选项的制作者文档,以及用于实现您自己的 Make 步骤构建目标的编写制作者指南。
forge.config.js
js
module.exports = {
makers: [
{
name: '@electron-forge/maker-zip',
platforms: ['darwin']
}
]
};
Publishers
配置对象上的顶级属性publishers
是发布者配置的数组。每个发布者都为您的可分发对象(例如 GitHub 或 S3)提供一个发布目标。
查看 Publishers 文档,了解所有官方发布者及其配置选项,以及编写 Publishers 指南,以实施您自己的自定义 Publish 目标。
forge.config.js
js
module.exports = {
publishers: [
{
name: '@electron-forge/publisher-github',
config: {
repository: {
owner: 'electron',
name: 'fiddle'
},
draft: true,
prerelease: false,
generateReleaseNotes: true
}
}
]
};
Plugins
配置对象上的顶级属性plugins
是插件配置的数组。Electron Forge 插件可以挂接到其生命周期中的任何时间点并提供额外的功能(例如,Webpack 插件将 webpack 捆绑集成到构建生命周期中,Electronegativity 插件将识别应用程序中的安全反模式)。
查看 插件 文档 了解所有可能的插件及其配置选项,以及 编写插件 指南以实现你自己的自定义 Forge 插件。
Hooks
配置对象上的顶级属性hooks
是一个包含钩子的对象,可用于在 Build Lifecycle 期间插入自定义逻辑。
查看 Hooks 文档,了解所有可能的 Hook 及其配置选项。
Build identifiers
此属性可用于标识不同的生成配置。通常,此属性设置为生成将发布到的通道或其他唯一标识符。例如,常见值为prod
和beta
。该标识符可以与fromBuildIdentifier
函数一起使用,以生成发布通道或特定于环境的配置。例如:
forge.config.js
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
构建。这允许您难以置信地轻松地创建共享配置,因为只有更改的值需要用该函数包装。