Как изменить структуру папок app.asar при использовании электронного компоновщика? - PullRequest
0 голосов
/ 08 апреля 2020

Я использую CRE для создания и создания моего кода веб-интерфейса. Моя (упрощенная) структура папок выглядит следующим образом:

package.json
node_modules/
public/
  └── electron.js
  └── index.html
src/

Мои npm сценарии:

"build": {
  "appId": "com.somedomain.app",
},
"scripts": {
    "react-start": "react-scripts start",
    "react-build": "react-scripts build",
    "react-test": "react-scripts test --env=jsdom",
    "react-eject": "react-scripts eject",
    "electron-build": "electron-builder",
    "release": "yarn react-build && electron-builder --publish=always",
    "build": "yarn react-build && yarn electron-build"
}

Когда я запускаю "build", проект создается, и появляется build папка со всем в ней, которая затем используется электроном для создания файла app.asar. Когда я извлекаю содержимое, я вижу следующую структуру:

package.json
node_modules/
build/
  └── electron.js
  └── index.html

Как электронщик узнал, что нужно взять папку build из папки моего проекта? Я попытался выяснить это, поиграв с полем "build" моего пакета. json примерно так:

"build": {
  "appId": "com.somedomain.app",
  "files": "app"
},

и переименовал мою папку build в app, но затем я получил следующую ошибку :

 ⨯ Application entry file "build\electron.js" in the "[redacted][\app.asar" does not exist. Seems like a wrong configuration. 

Кажется, что электрон все еще пытается запустить electron.js из папки build, которой сейчас нет в app.asar.

Как изменить структуру файла в файле app.asar? Должен ли он содержать папку build? В идеале я хотел бы иметь следующую структуру:

package.json
node_modules
electron/
  └── electron.js
frontend
  └── index.html

Я попытался изменить поле "files" еще немного, я попытался "extraFiles" и "buildResources", но даже если я смогу получить структуру папок внутри app.asar так, как я хочу, я продолжаю получать сообщение об ошибке:

 ⨯ Application entry file "build\electron.js" in the "[redacted][\app.asar" does not exist. Seems like a wrong configuration. 

1 Ответ

0 голосов
/ 09 апреля 2020

Я выяснил, в чем была проблема. По-видимому, когда электронный строитель видит, что реакции-скрипты находятся в зависимостях, он автоматически использует встроенную конфигурацию, называемую реагировать-cra. Встроенная конфигурация для Reaction-cra выглядит следующим образом:

directories: {
  buildResources: "assets"
},
files: ["build/**/*"],
extraMetadata: {
  main: "build/electron.js"
}

поле extraMetadata является причиной ошибки

⨯ Application entry file "build\electron.js" in the "[redacted][\app.asar" does not exist. Seems like a wrong configuration.

.

Чтобы не использовать встроенную конфигурацию реагирования, можно добавить "extends": null в их пакет. Поле json "build". При следующей конфигурации я получил желаемый результат:

"build": {
    "appId": "io.gueney.app",
    "extends": null,
    "files": [
      "electron/**/*",
      "frontend/**/*"
    ]
  },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...