【问题标题】:electron-forge: how to specify hooks?electron-forge:如何指定钩子?
【发布时间】:2020-09-28 07:46:38
【问题描述】:

目标

我想在电子锻造的打包步骤之前删除一些文件夹,因为package.json 中的选项ignore.roge.config 并没有删除我为某些包指定忽略的所有中间文件夹。这些中间文件夹通常是在打包过程中的原生构建过程中生成的。

问题

但添加 hooks 字段 with the documented events 似乎不起作用,例如,

拥有像这样的 package.json 字段似乎对等式没有任何帮助,即,我没有看到预期的控制台日志。

  "config": {
    "forge": {
      "packagerConfig": {
        "icon": "src/images/myapp",
        "ignore": [
          "/.gitignore",
          "/.vscode",
          "/yarn.lock",
          "/node_modules/mydep/build/",
          "/node_modules/mydep/prebuilds/linux*"
        ]
      },
      "hooks": {
          "prePackage": "async () => {\"console.log("this is prepackage step.");\"} "
      },
      "makers": [
        {
          "name": "@electron-forge/maker-zip",
          "platforms": [
            "darwin",
            "win32"
          ]
        }
      ]
    }
  },

参考a related elctron-forge github issue,我也尝试将JS源文件提供给钩子


"hooks": "require:./hooks.js",

钩子脚本的样子

{
    prePackage: async () => {
        console.log('this is prepackage step.');
    }
}

这也没有用。

更糟糕的是,我什至不能以这种方式指定多个挂钩:

{
    generateAssets: async () => {
        console.log('We should generate some assets here');
    },
    prePackage: async (forgeConfig, options) => {
        console.error('lbn: prePackage');
    }
}

上面的代码在运行yarn make时给了我以下错误:

An unhandled error has occurred inside Forge:
Unexpected token ':'
/path/to/myapp/hooks.js:5
    prePackage: async (forgeConfig, options) => {
              ^

SyntaxError: Unexpected token ':'
    at wrapSafe (internal/modules/cjs/loader.js:1116:16)
    at Module._compile (internal/modules/cjs/loader.js:1164:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
    at Module.load (internal/modules/cjs/loader.js:1049:32)
    at Function.Module._load (internal/modules/cjs/loader.js:937:14)
    at Module.require (internal/modules/cjs/loader.js:1089:19)
    at require (internal/modules/cjs/helpers.js:73:18)
    at renderConfigTemplate (/path/to/myapp/node_modules/@electron-forge/core/src/util/forge-config.ts:100:20)
    at _default (/path/to/myapp/node_modules/@electron-forge/core/src/util/forge-config.ts:145:3)
    at /path/to/myapp/node_modules/@electron-forge/core/src/api/make.ts:96:19
error Command failed with exit code 1.

问题

指定钩子的正确方法是什么?

【问题讨论】:

    标签: javascript electron packaging


    【解决方案1】:

    自己解决了。

    我们应该把钩子作为一个普通的全局模块来放置

    
    // ./hooks.js
    
    const fs = require('fs');
    const path = require('path');
    
    module.exports = {
    
    postPackage: async (forgeConfig, options) => {
        console.warn('\n\npostPackage: exclude files ...\n\n');
    }
    
    }; // module.exports = {
    
    
    

    那就参考package.json

    "hooks": "require:./hooks.js",
    

    【讨论】:

    • 来源?我对电子锻造还很陌生,但我在他们的任何文档上都没有看到这种方法(在 hooks 中使用 requirepackage.json 中)
    • @1owk3y 好吧,我在生产代码中使用它,所以我想这至少是一些证据......
    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 2021-11-16
    • 2021-11-26
    • 2020-08-04
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多