如何解决编写自定义 Electron-Forge Maker
我一直试图通过创建一个新的制造商来扩展电子锻造,使用 innosetup。
现在关于如何通过扩展 MakerBase 和实现 isSupportedOnCurrentPlatform 和 make 创建新 maker 的文档非常清晰和清晰,但我对如何在我的代码中使用/注册新创建的 maker 感到有些困惑。
maker-inno.js
const path = require("path");
const fs = require("fs");
class MakerInno extends require("@electron-forge/maker-base").default {
isSupportedOnCurrentPlatform() {
return process.platform === "win32";
}
async make(options) {
...
return [pathToOutput];
}
}
module.exports = MakerInno;
forge.config.js
const Innomaker = require("./scripts/maker-inno.js");
const innomakerConfig = {};
module.exports = {
...
makers : [
new Innomaker(innomakerConfig)
]
...
}
现在,我已经将伪造的 make 代码调试到@electron-forge/core/api/make...但是当加载配置并使用制造商时,forgeConfig 被包裹在 Proxy 对象中反过来,制造商也是如此,从那时起它就无法检查我的制造商。
也就是说,这个指针会很受欢迎。
旁注:我真的很讨厌使用 require().default 来扩展类,我的代码必须在打字稿中,但是当涉及到配置文件时,我不知所措,一个关于这样做的更简洁方法的指针会不胜感激:p
解决方法
好吧,我无法仅通过本地类来完成此工作,因此必须在我的项目下创建一个本地包
{
"name": "electron-forge-maker-inno","version": "1.0.0","description": "InnoSetup maker for Electron Forge","main": "dist/index.js","scripts": {
"build": "tsc --project tsconfig.json"
},"engines": {
"node": ">= 10.0.0"
},"dependencies": {
"@electron-forge/maker-base": "6.0.0-beta.54","@electron-forge/shared-types": "6.0.0-beta.54","innosetup-compiler": "^5.6.1"
}
}
并在主项目 package.json 中引用它
"devDependencies": {
...
"electron-forge-maker-inno": "file:scripts/maker-inno",...
}
然后我就可以将制造商添加到我的伪造配置中
module.exports = {
...
makers : [
{ name: "electron-forge-maker-inno",config: innoConfig },]
...
}
这感觉很糟糕,但它再次奏效,理想情况下有人会添加一个 Inno Setup Maker 来锻造。 "innosetup-compiler" 已经完成了必须要做的工作,它只需要一个 Forge Maker 包装器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。