Electron 包指南
本文档涵盖了为 Electron 编写 PKGBUILD 的标准和指南。
使用系统 Electron
Arch Linux 提供了带版本的 electron* 软件包,以及一个指向最新版本的 electron 元软件包。它们可以通过 shell 脚本包装器来运行 Electron 应用程序。
#!/bin/sh exec /usr/bin/electron34 /path/to/appname/ "$@"
在预构建的 Electron 应用程序中,appname/ 目录(或者名为 appname.asar 的文件包)位于 resources/app/ 文件夹(或 resources/app.asar)中。其余所有内容仅仅是 Electron 运行时的副本,可以在最终软件包中删除。
编辑 package.json 中的版本
使用 sed 编辑 package.json 或 package-lock.json 中的 Electron 版本是危险的。你可以改为使用 npm pkg set devDependencies.electron=$(cat /usr/lib/electron*/version)。
针对系统 Electron 构建编译扩展
某些 Electron 应用程序具有链接到 Electron 运行时的编译原生扩展,且必须使用正确的 Electron 版本构建。由于 npm/yarn 总是针对私有的预构建 Electron 副本进行构建,因此请修补 package.json 中的 Electron 依赖,使其引用与系统 Electron 依赖相同的版本。构建系统将下载所需的预构建副本,编译原生扩展并将所有内容打包到最终发行版中,但这在 package() 步骤中可以像往常一样被清理掉。
或者,你可以从 package.json 中删除 Electron 依赖,并在运行 npm 之前设置正确的环境变量。
export npm_config_target=$(tail /usr/lib/electron/version) export npm_config_arch=x64 export npm_config_target_arch=x64 export npm_config_disturl=https://electron.js.cn/headers[dead link 2023-10-29—HTTP 404] export npm_config_runtime=electron export npm_config_build_from_source=true HOME="$srcdir/.electron-gyp" npm install
将 HOME 设置为 $srcdir 内部的路径,这样构建过程就不会在你的实际 HOME 目录中放置任何文件。请确保为所有使用 .electron-gyp 缓存的后续命令调整路径。
(更多详情见 Electron 文档)。
将 electron-builder 与系统 Electron 配合使用
许多项目使用 electron-builder 来构建和打包 Javascript 文件和 Electron 二进制文件。默认情况下,electron-builder 会下载包管理文件(如 package.json)中定义的完整 Electron 版本。如果你想使用系统 Electron 并且由于最终会丢弃 Electron 二进制文件而想要节省带宽,这可能不是你想要的结果。electron-builder 提供了 electronDist 和 electronVersion 配置,分别用于指定自定义的 Electron 路径和应用程序打包所针对的版本。
找到 electron-builder 配置文件(例如 electron-builder.json)并添加以下设置:
- 对于 electron34,将
electronDist设置为/usr/lib/electron34 - 将
electronVersion设置为/usr/lib/electron34/version的内容(如果存在,去掉开头的v)
应用此操作的软件包:rocketchat-desktopAUR ubports-installer-gitAUR
或者,你可以使用 CLI 来更改/添加这些设置,如下所示:
./node_modules/.bin/electron-builder --linux --x64 --dir $dist -c.electronDist=$electronDist -c.electronVersion=$electronVer
请注意,你必须指定所有这些选项,否则将无法生效。
Architecture
请参阅 PKGBUILD#arch。
包含编译原生扩展的 Electron 软件包是依赖架构的。否则,它很可能是架构无关的。
如果软件包包含预构建的 Electron 副本,则它始终是依赖架构的。
目录结构
如果软件包是依赖架构的,请将 resources/app/ 目录安装到 /usr/lib/appname/。否则,请使用 /usr/share/appname/。
如果软件包包含预构建的 Electron 副本,请将整个最终发行版复制到 /opt/appname。
获取 Electron 版本
Electron 的版本可以通过在包含 package.json 或 package-lock.json 的目录中运行 npm pkg get devDependencies.electron 来获取。
预构建或 非自由 应用程序可能会在 package.json、package-lock.json 和 version 文件中隐藏 Electron 版本。在这种情况下,你可以通过将 app 或 app.asar 替换为 /usr/lib/electron/resources/default_app.asar 并运行 pathto/electron-binary --version 来获取版本。