electron - electron-builder 无法在 macos 上构建 linux 包 - 错误:未知目标:构建
问题描述
我electron-builder
用来打包我的应用程序。我有一个dist/
文件夹,所有资源都在其中。main.js
在根文件夹中不需要任何转译,包括主流程代码。electron
使用命令启动时,这在开发模式下运行良好。
我已经electron-builder
使用配置进行了设置package.json
:
[...]
"main": "./main.js",
"build": {
"appId": "com.electron.mycompany.myapp",
"productName": "myapp",
"linux": {
"target": "deb"
},
"files": [
"./dist",
"./main.js"
]
},
[...]
我是electron-builder
这样启动的:electron-builder -ml build
. Macos 构建包很好,我能够启动应用程序。但是 Linux 构建失败。我正在 macos Catalina 上构建 Linux 包。它给了我错误堆栈跟踪:
rebuilding native dependencies dependencies=leveldown@5.6.0 platform=linux arch=x64
⨯ Unknown target: build stackTrace=
Error: Unknown target: build
at createCommonTarget (/Users/username/Projects/myappnode_modules/app-builder-lib/src/targets/targetFactory.ts:90:11)
at /Users/username/Projects/myapp/node_modules/app-builder-lib/src/linuxPackager.ts:65:18
at mapper (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/targets/targetFactory.ts:57:16)
at LinuxPackager.createTargets (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/linuxPackager.ts:63:7)
at createTargets (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/targets/targetFactory.ts:64:12)
at Packager.doBuild (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/packager.ts:442:28)
at processTicksAndRejections (internal/process/task_queues.js:85:5)
at executeFinally (/Users/username/Projects/myapp/node_modules/builder-util/src/promise.ts:12:14)
at Packager._build (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/packager.ts:373:31)
at Packager.build (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/packager.ts:337:12)
at executeFinally (/Users/username/Projects/myapp/node_modules/builder-util/src/promise.ts:12:14)
• building embedded block map file=dist/IJP Visualization Tool-1.0.0-alpha.1-mac.zip
我没有使用任何代码签名(我也不希望这样做)。是不是配置错误?似乎是这样,但不确定到底是什么问题。
解决方案
根据electron-builder
CLI 文档,所有平台交换机都接受一个“目标列表”,本质上是您在package.json
不同平台条目中配置的内容(build.<platform>.target
例如build.linux.target
)。
但是,通过使用这些目标列表,您可以指定要构建的目标并排除所有其他目标。由于 Linux 的 switch 是 switch list 中的最后一个,因此-ml
Electron Builder 将其解释为好像您想将目标列表传递给它。这不适用于 macOS 构建步骤,因为那时您必须使用-m <targets> -l <targets>
,-ml <targets>
显然仅适用于 Linux。
因此,通过附加build
到命令行,您告诉 Electron Builder 为 macOS 编译所有配置的目标,但只构建名为build
. 由于没有这样的目标,Electron Builder 崩溃。build
从你的命令中删除就可以了。
推荐阅读
- r - 在 R 中解析从 mongoDB 导出的 JSON
- freeradius - 转发自由半径
- java - 在超类中声明的枚举在子类中不可访问
- netsuite - 如何在 Suitelet 的列表 (serverWidget.List) 中添加复选框
- angular - Angular6 Schema 表单动态选择
- reactjs - 在父组件的状态更改时重新渲染子组件
- performance - 为什么 Cassandra 从磁盘读取的数据比需要的多得多?
- mysql - 如何在 MySQL Workbench 8.0 中获取表或属性的名称
- excel - 将多列与多列 2 表进行比较,如果数据匹配则返回不同的列
- c# - 将一行Data转换成字符串列表