title: Writing custom Electron-Forge Maker
body: <p>I been trying to extends electron-forge by creating a new maker, to use innosetup.</p>
  <p>Now the documentation is very clean and clear on how to create the new maker by extending the MakerBase and implementing isSupportedOnCurrentPlatform and make, but I'm a bit puzzled as how to consume/register the newly created maker in my code.</p>
  <pre><code>maker-inno.js 
  
  const path = require(&quot;path&quot;);
  const fs = require(&quot;fs&quot;);
  
  class MakerInno extends require(&quot;@electron-forge/maker-base&quot;).default {
      isSupportedOnCurrentPlatform() {
          return process.platform === &quot;win32&quot;;
      }
      async make(options) {      
          ... 
          return [pathToOutput];
      }
  }
  
  module.exports = MakerInno;
  
  </code></pre>
  <pre><code>forge.config.js
  
  const InnoMaker = require(&quot;./scripts/maker-inno.js&quot;);
  const innoMakerConfig = {};
  
  module.exports = {
     ...
     makers : [
         new InnoMaker(innoMakerConfig)
     ]
     ...
  }
  
  </code></pre>
  <p>Now, I've debugged the forge make code down to @electron-forge/core/api/make... but by the time the config is loaded and the makers are to be used the forgeConfig is wrapped in Proxy object and in turn so are the makers and from there on it just fails to check my maker.</p>
  <p>so that said, a pointer on this would be appriciated.</p>
  <p>Side Note: I really hate use of require().default for extending the class, must my code is in typescript but when it comes to config files I'm at a loss, a pointer on cleaner way of doing this would be appreciated :p</p>