簡體   English   中英

使用electron-builder時如何修改app.asar的文件夾結構?

[英]How to modify the folder structure of app.asar when using electron-builder?

我正在使用 create-react-app (CRA) 創建和構建我的前端代碼。 我的(簡化的)文件夾結構如下所示:

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文件夾,然后 electron 使用它來創建app.asar文件。 當我提取內容時,我看到以下結構:

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

electron-builder 是如何知道從我的項目文件夾中獲取build文件夾的? 我嘗試通過使用 package.json 的"build"字段來解決這個問題:

"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 仍然嘗試從build文件夾運行electron.js ,該文件夾現在在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. 

我發現了問題所在。 顯然,當 electron-builder 看到 react-scripts 在依賴項中時,它會自動使用一個名為 react-cra 的內置配置。 react-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.

錯誤。

為了防止使用 react-cra 內置配置,可以在 package.json 的"build"字段中添加"extends": null 通過以下配置,我得到了想要的結果:

"build": {
    "appId": "io.gueney.app",
    "extends": null,
    "files": [
      "electron/**/*",
      "frontend/**/*"
    ]
  },

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM