Electron-Forge, как указать исходный каталог для упаковки?

Я установил приложение create-Reaction-app с приложением Electron-Forge, и теперь мне нужно как-то указать папку сборки, созданную из CRA для упаковки. Эта папка также должна быть подана.

Будет ли такое возможно с помощью электронной кузницы?

3 ответа

Решение

Насколько я понимаю, вы спрашиваете, как указать Electron-Forge, в каком каталоге искать исходные файлы для упаковки приложения.

Если это так, см.: https://github.com/electron-userland/electron-packager/blob/master/docs/api.md

где он описывает варианты

"config": { "forge": {

объект в вашем файле package.json

внутри них есть этот объект конфигурации пакета:

  "electronPackagerConfig": {
    "dir": "./src",

где вы можете указать исходную папку.

Кроме того, кстати: там вы можете указать файлы / файловые регулярные выражения, которые будут игнорироваться в упаковке:

    "ignore": [".idea", ".gitignore"]

В electronic-forge нет возможности указать входную папку (будет использоваться корневая папка проекта):

  1. Указать ignoreвозможность пропускать папки/файлы;
  2. Использовать mainключ в package.json, чтобы указать правильный сценарий запуска.

Например, package.json для проекта vue:

      {
    "name": "project",
    "version": "1.0.0",
    "main": "index.js",
    ...
    "config": {
        "forge": {
            "packagerConfig": {
                "ignore": [
                    "^/[.]vs$",
                    "^/public$",
                    "^/src$",
                    "^/[.]browserslistrc$",
                    "^/[.]editorconfig$",
                    "^/tsconfig[.]json$",
                    "[.](cmd|user|DotSettings|njsproj|sln)$"
                ]
            },
            ...
        }
    },
    ...
}

На самом деле вы можете указать исходную папку только в аргументе скрипта (предположим, что /src — это папка с файлами для упаковки):electron-forge package ./src

Эта исходная папка должна содержать package.json с данными, необходимыми для упаковки вашего проекта. Если package.json не найден или он не соответствует требованиям , Electron-Forge перейдет в папку с соответствующим package.json и предположит, что это настоящая папка проекта. Как я нашел в источниках Electronic-Forge, нужны как минимум такие данные:

      { 
  name: cfg.name,
  version: cfg.version,
  author: cfg.author,
  main: "main.js",
  devDependencies: {
    electron: cfg.devDependencies.electron,
    "@electron-forge/cli": cfg.devDependencies["@electron-forge/cli"]
  },
  config: {
    forge: "../forge.config.js"
  }
}

В моем проекте я создаю этот package.json с помощью скрипта и использую свой основной package.json какcfgв приведенном выше примере для предоставления данных. Также вы можете указать конфигурацию forge как путь к вашему forge.config.js, чтобы избежать ее дублирования.

Также имейте в виду, что Electron-Forge будет упаковывать файлы/каталоги только в эту папку , поэтому ни node_modules, ни другие внешние ресурсы не будут включены. Поэтому вам нужно либо создать пакет вашего проекта с помощью webpack, esbundle и т. д., либо быть осторожным с зависимостями и предоставить его для упакованного приложения.

Другие вопросы по тегам