微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编写自定义 Electron-Forge Maker

如何解决编写自定义 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 举报,一经查实,本站将立刻删除。