首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写自定义Electron-Forge Maker

编写自定义Electron-Forge Maker
EN

Stack Overflow用户
提问于 2021-02-22 23:45:26
回答 1查看 142关注 0票数 1

我一直试图通过创建一个新的maker来扩展electron-forge,来使用innosetup。

现在,关于如何通过扩展MakerBase并实现isSupportedOnCurrentPlatform和make来创建新的maker的文档非常清晰,但是我对如何在我的代码中使用/注册新创建的maker感到有点困惑。

代码语言:javascript
复制
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;
代码语言:javascript
复制
forge.config.js

const InnoMaker = require("./scripts/maker-inno.js");
const innoMakerConfig = {};

module.exports = {
   ...
   makers : [
       new InnoMaker(innoMakerConfig)
   ]
   ...
}

现在,我已经将forge make代码调试到@forge forge/core/api/make...但是,在加载配置和使用maker时,forgeConfig被封装在代理对象中,maker也是如此,从那时起,它就无法检查maker了。

这就是说,在这上面的一个指针是正确的。

附注:我真的讨厌使用require().default来扩展类,我的代码必须是typescript格式的,但当涉及到配置文件时,我会不知所措,如果能用更简洁的方式来做这件事,我会很感激的:p

EN

回答 1

Stack Overflow用户

发布于 2021-02-25 05:10:17

我不能仅仅通过一个本地类让它工作,所以我必须在我的项目下创建一个本地包

代码语言:javascript
复制
{
    "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中引用它

代码语言:javascript
复制
"devDependencies": {
    ...
    "electron-forge-maker-inno": "file:scripts/maker-inno",
    ...
}

然后,我可以将制造商添加到我的forge配置中

代码语言:javascript
复制
module.exports = {
   ...
   makers : [
       { name: "electron-forge-maker-inno", config: innoConfig },
   ]
   ...
}

这感觉很糟糕,但它又起作用了,理想情况下,有人会添加一个Inno设置制造商来伪造。"innosetup-compiler"已经完成了必须的工作,它只需要一个伪造制造商的包装器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66318858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档