Ern*_*e S 5 javascript node.js electron electron-builder
我正在以编程方式使用电子构建器来生成安装包.到目前为止,我将此作为我的实用程序来为当前操作系统类型创建安装包:
const packagejson = require("../package.json");
const builder = require("electron-builder");
const Platform = builder.Platform;
function buildPromise(){
//Development package.json
const devMetadata = packagejson.electronBuilder;
//Application package.json
const appMetadata = {
name: packagejson.name,
version: packagejson.version,
description: packagejson.description,
author: packagejson.author,
productName: packagejson.productName
};
//Build for the current target and send back promise
return builder.build({
projectDir: "./",
devMetadata,
appMetadata
});
}
module.exports = {
buildPromise,
outputPath : packagejson.electronBuilder.directories.output
};
Run Code Online (Sandbox Code Playgroud)
它的作用是从package.json包含此部分的应用程序MAIN 文件中提取所需的元数据(因此应用程序package.json为空):
...
"electronBuilder": {
"build": {
"productName": "Node App",
"appId": "my.id",
"asar": false,
"win": {
"iconUrl": "http://localhost:5000/images/logo-multi.ico",
"target": "nsis"
},
"nsis" :{
"oneClick": false
}
},
"directories": {
"output": "electron/output",
"app":"electron/app",
"buildResources": "electron/buildResources"
}
}
...
Run Code Online (Sandbox Code Playgroud)
当我在Windows中运行构建时,我得到一个名为的文件Node App Setup 1.0.0.exe.到目前为止一切顺利.但是,我如何实际控制最终文件名?或者至少以编程方式检索该文件名,以便我可以读取它并以某种方式响应客户端?显然,我可以从json文件设置中将它拼凑在一起,但我宁愿它更明确.
Gre*_*g K 12
您可以artifactName在build您的部分中指定输出文件名package.json.
文档说工件文件名模板支持${ext}宏:
您可以在文件模式,工件文件名模式和发布配置URL中使用宏:
${arch}- 扩展到ia32,x64.如果没有拱形,宏将从带有前导空格的模式中删除, - 和_(因此,您不必担心并且可以重复使用模式).
${os}- 根据目标平台扩展到mac,linux或win.
${name}- package.json名称.
${productName}- 消毒产品名称.
${version}- 来自package.json
${channel}- 从版本中检测到的预发布组件(例如beta).
${env.ENV_NAME}- 任何环境变量.
AppInfo的任何属性(例如buildVersion,buildNumber).
"build": {
"appId": "com.electron.app.my",
"artifactName": "node-app-${version}.${ext}",
...
},
Run Code Online (Sandbox Code Playgroud)
如果您的软件包版本是1.0.0,则会输出Windows目标:
node-app-1.0.0.exe
应我的要求,作者将其添加到当前版本(8.5.1)中:
https://github.com/electron-userland/electron-builder/issues/899
所以现在我们可以这样做:
builder.build()
.then(paths => {
//paths contains an array of export file paths, e.g.:
console.log(paths[0]); //= c:/MyProject/dist/My Project Setup 1.0.0.exe
console.log(paths[1]); //= c:/MyProject/dist/myproject-1.0.0-x86_64.AppImage
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2763 次 |
| 最近记录: |