electron -forge: как указать перехваты?

#javascript #electron #packaging

#javascript #electron #упаковка #electron -forge

Вопрос:

Цель

Я хочу избавиться от некоторых папок перед этапом упаковки electron-forge, потому что опция ignore.roge.config in package.json не удаляет все промежуточные папки, которые я указываю игнорировать для некоторых пакетов. Эти промежуточные папки обычно создаются во время процесса сборки во время упаковки.

Проблема

Но добавление hooks поля с документированными событиями, похоже, не работает, например,

наличие такого 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"
          ]
        }
      ]
    }
  },
  

Ссылаясь на связанную проблему elctron-forge github, я также пытался передать исходный файл 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.
  

Вопрос

Как правильно указывать перехваты?

Ответ №1:

Решил это сам.

Мы должны разместить хуки как обычный глобальный модуль

 
// ./hooks.js

const fs = require('fs');
const path = require('path');

module.exports = {

postPackage: async (forgeConfig, options) => {
    console.warn('nnpostPackage: exclude files ...nn');
}

}; // module.exports = {


  

Затем обратитесь к нему в package.json

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

Комментарии:

1. Источник? Я довольно новичок в electron-forge, но я не вижу такого подхода (использования require in hooks в package.json ) ни в одном из их документов

2. @1owk3y ну, я использую его в своем производственном коде, так что, думаю, это хоть какое-то доказательство…