编写插件

Electron Forge 插件必须导出一个扩展我们基础插件的单个类。可以通过安装@electron-forge/plugin-base来依赖基础插件。它可以实现两种方法,但都不是必需的。

getHooks(): ForgeMultiHookMap

如果实现了此方法,它将在 Forge 内部插件初始化期间调用一次,此方法仅调用一次,不应导致执行任何副作用。您必须返回一个类似于forgeConfig.hooks的格式的对象,即钩子名称和钩子函数数组之间的对象映射。

可能的钩子名称以及传递给您返回的钩子函数的参数在文档的配置部分中有说明。

export default class MyPlugin extends PluginBase {
  getHooks () {
    return {
      prePackage: [this.prePackage]
    };
  }

  prePackage () {
    console.log('running prePackage hook');
  }
}

startLogic(startOpts: StartOptions): Promise<ChildProcess | false>

如果实现了此方法,则每次用户运行electron-forge start时都会调用它,如果您返回一个ChildProcess,您可以覆盖内置的启动逻辑,Electron Forge 不会生成自己的进程,而是监视您返回的进程。如果您返回false,Forge 将自行生成 Electron,但您仍然可以运行自定义逻辑,例如在应用启动之前启动代码编译或下载某些二进制文件。

请注意,此处覆盖启动逻辑仅在开发环境中有效,如果您想更改打包后应用的运行方式,则需要使用构建钩子将代码注入到打包的应用中。

StartOptionsAPI 文档中有进一步解释。

export default class MyPlugin extends Pluginbase {
  async startLogic (opts) {
    await this.compileMainProcess();
    return null;
  }

  compileMainProcess () { /* ... */ }
}

上次更新