electron-builder fails building linux package on macos - Error: Unknown target: build
electron-builder fails building linux package on macos - Error: Unknown target: build
我正在使用 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 documentation,所有平台开关都接受一个“目标列表”,这实际上是您在 package.json
中使用不同平台条目配置的内容(build.<platform>.target
,例如 build.linux.target
).
但是,通过使用这些目标列表,您可以指定要构建的目标并排除所有其他目标。由于 Linux' 开关是开关列表 -ml
中的最后一个,Electron Builder 将其解释为就好像您要将目标列表传递给它一样。这不适用于 macOS 构建步骤,因为那样你就必须使用 -m <targets> -l <targets>
,-ml <targets>
显然只适用于 Linux.
因此,通过将 build
附加到命令行,您告诉 Electron Builder 为 macOS 编译所有配置的目标,但只构建名为 build
的 Linux 目标。由于没有这样的目标,Electron Builder 崩溃了。从您的命令中删除 build
即可。
我正在使用 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 documentation,所有平台开关都接受一个“目标列表”,这实际上是您在 package.json
中使用不同平台条目配置的内容(build.<platform>.target
,例如 build.linux.target
).
但是,通过使用这些目标列表,您可以指定要构建的目标并排除所有其他目标。由于 Linux' 开关是开关列表 -ml
中的最后一个,Electron Builder 将其解释为就好像您要将目标列表传递给它一样。这不适用于 macOS 构建步骤,因为那样你就必须使用 -m <targets> -l <targets>
,-ml <targets>
显然只适用于 Linux.
因此,通过将 build
附加到命令行,您告诉 Electron Builder 为 macOS 编译所有配置的目标,但只构建名为 build
的 Linux 目标。由于没有这样的目标,Electron Builder 崩溃了。从您的命令中删除 build
即可。