#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
inhooks
вpackage.json
) ни в одном из их документов2. @1owk3y ну, я использую его в своем производственном коде, так что, думаю, это хоть какое-то доказательство…