打包 electron 应用程序简单地说就是创建一个桌面安装程序(dmg、exe、deb等)。如果你决定手动打包应用程序,那么你会度过一段不愉快的时光。
幸运的是,有一些模块,特别是下面提到的两个,使得这个任务更容易。
我们将使用 electron-builder,因为它内置支持代码签名/自动更新等功能。
配置应用程序使用 electron-builder:
- 在项目根目录中创建一个目录 build,并将
background.png
(macOS DMG 背景)、icon.icns
(macOS 应用程序图标)和icon.ico
(Windows 应用程序图标)保存在其中。Linux 图标集将根据 macOS 自动生成。例如:zulip-electron/build - 运行以下命令将 electron-builder 添加到应用程序的 devDependencies 中:
npm install electron-builder --save-dev
- 在 electron-builder 中,你可以使用两个 package.json 结构以及单个 package.json。我们将使用单个 package.json 结构,因为它更容易维护。
示例 One package.json
{
"name": "zulip-electron",
"version": "2.3.0",
"description": "Zulip desktop client",
"author": "Zulip <support@zulipchat.com>",
"main": "src/index.js",
"scripts": {
"start": "electron-forge start",
"pack": "electron-builder --dir",
"dist": "electron-builder"
},
"license": "MIT",
"dependencies": {
"zulip-js": "^1.0.0"
},
"devDependencies": {
"electron": "^8.2.5",
"electron-builder": "^22.4.1",
"electron-forge": "^6.0.0-beta.54",
"electron-log": "^4.3.2"
},
"build": {
"appId": "chat.zulip.zulip-electron",
"productName": "Zulip",
"linux": {
"target": [
"deb",
"AppImage"
],
"category": "Network"
},
"win": {
"target": "nsis"
},
"dmg": {
"background": "build/background.png",
"icon": "build/icon.icns"
},
"mac": {
"category": "public.app-category.social-networking",
"target": "dmg",
"icon": "build/icon.icns",
"hardenedRuntime": true,
"gatekeeperAssess": false,
"entitlements": "build/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist"
},
"directories": {
"buildResources": "build"
},
"extraFiles": [
{
"from": "build/icon.ico",
"to": "."
}
]
}
}
在 Windows 上构建时,你还可以使用 NSIS 目标,它是默认的并被 electron-builder 推荐的。
electron-builder --win
这就是配置 electron-builder 的全部内容。现在让我们构建安装程序。要将应用程序打包成安装程序,请使用以下命令:
electron-builder
它将在 /dist 文件夹中创建一个安装程序。默认情况下,构建命令将只为当前平台和当前架构生成安装程序。例如,在 OSX 上运行它将创建:
Zulip-2.3.0.dmg
在 Windows 上 -
Zulip Setup 2.3.0.exe
在 Linux 上 -
zulip-electron_2.3.0_amd64.deb
zulip-electron-2.3.0-x86_64.AppImage
electron-builder 是高度可配置的。要完整使用它,请查看它的wiki。zulip-electron(两个 package.json)和onshape-desktop-shell(一个 package.json)是一些使用 electron-builder 进行打包的真实项目。
评论(0)