首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用e-builder时修改app.asar的文件夹结构?

如何在使用e-builder时修改app.asar的文件夹结构?
EN

Stack Overflow用户
提问于 2020-04-08 18:30:28
回答 1查看 4.9K关注 0票数 3

我正在使用create-react-app (CRA)来创建和构建我的前端代码。我的(简化的)文件夹结构如下所示:

代码语言:javascript
运行
复制
package.json
node_modules/
public/
  └── electron.js
  └── index.html
src/

我的npm脚本:

代码语言:javascript
运行
复制
"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文件。当我提取内容时,我看到以下结构:

代码语言:javascript
运行
复制
package.json
node_modules/
build/
  └── electron.js
  └── index.html

电子生成器是如何知道从我的项目文件夹中取出build文件夹的?我尝试使用我的package.json的"build"字段来解决这个问题,如下所示:

代码语言:javascript
运行
复制
"build": {
  "appId": "com.somedomain.app",
  "files": "app"
},

并将我的build文件夹重命名为app,但随后得到以下错误:

代码语言:javascript
运行
复制
 ⨯ Application entry file "build\electron.js" in the "[redacted][\app.asar" does not exist. Seems like a wrong configuration. 

似乎电子仍然试图从build文件夹中运行electron.js,而这个文件夹现在在app.asar中不存在。

如何修改app.asar文件中的文件结构?它必须包含build文件夹吗?理想情况下,我希望有以下结构:

代码语言:javascript
运行
复制
package.json
node_modules
electron/
  └── electron.js
frontend
  └── index.html

我尝试了更多地修改"files"字段,我尝试了"extraFiles""buildResources",但即使我可以以我想要的方式获得app.asar中的文件夹结构,我仍然得到错误:

代码语言:javascript
运行
复制
 ⨯ Application entry file "build\electron.js" in the "[redacted][\app.asar" does not exist. Seems like a wrong configuration. 
EN

回答 1

Stack Overflow用户

发布于 2020-04-09 19:21:10

我发现问题出在哪里。显然,当电子生成器发现react-scripts在依赖项中时,它会自动使用名为react-cra的内置配置。react-cra的内置配置如下所示:

代码语言:javascript
运行
复制
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。使用下面的配置,我得到了想要的结果:

代码语言:javascript
运行
复制
"build": {
    "appId": "io.gueney.app",
    "extends": null,
    "files": [
      "electron/**/*",
      "frontend/**/*"
    ]
  },
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61098553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档