Electron 包指南
本文档涵盖了编写 PKGBUILD 以用于 Electron 的标准和指南。
使用系统 Electron
Arch Linux 提供了版本化的 electron* 包和一个用于最新版本的 electron 元软件包。它们可以用于通过 shell 脚本包装器运行 electron 应用程序。
#!/bin/sh exec /usr/bin/electron34 /path/to/appname/ "$@"
appname/ 目录,或替代的名为 appname.asar 的文件包,可以在预构建的 electron 应用程序中的 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),并添加以下设置:
- 将
electronDist设置为/usr/lib/electron34,用于 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 来获取版本。