Electron 软件包指南

出自 ArchWiki
Arch 软件包指南

32 位CLRCMake交叉编译DKMSEclipseElectron字体Free PascalGNOMEGoHaskellJavaKDE内核模块LispMesonMinGWNode.js非自由OCamlPerlPHPPythonRRubyRust - 安全ShellVCSWebWine

本文档涵盖了关于为 Electron 编写 PKGBUILD 的标准和指南。

使用系统 electron

Arch Linux 提供了全局 electron 和版本化的 electron* 软件包,可用于通过 shell 脚本包装器运行 electron 应用程序

#!/bin/sh

exec electron /path/to/appname/ "$@"

应用名/ 目录,或者可选地,名为 应用名.asar 的文件捆绑包,可以在预构建的 electron 应用程序中找到,作为 resources/app/ 文件夹(或 resources/app.asar)。其他一切都只是 electron 运行时的副本,可以从最终软件包中删除。

针对系统 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 ⓘ]
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 提供了配置 electronDistelectronVersion,以分别指定 Electron 的自定义路径和应用程序打包的版本。

找到 electron-builder 配置文件(例如 electron-builder.json)并添加以下设置

  • electronDist 设置为 /usr/lib/electron 用于 electron,或设置为 /usr/lib/electron2 用于 electron2AUR
  • electronVersion 设置为 /usr/lib/electron/version 的内容,不带前导 v

应用此设置的软件包: rocketchat-desktopAUR ubports-installer-gitAUR

electron-builder 配置[死链 2024-10-12 ⓘ]

或者,您可以使用 CLI 来更改/添加这些设置,如下所示

./node_modules/.bin/electron-builder --linux --x64 --dir $dist -c.electronDist=$electronDist -c.electronVersion=$electronVer

请注意,您必须指定所有这些选项,否则它将无法工作。

架构

参见 PKGBUILD#arch

包含编译后的原生扩展的 Electron 软件包是架构相关的。否则,它很可能是架构无关的。

如果软件包包含预构建的 electron 副本,则它始终是架构相关的。

目录结构

如果软件包是架构相关的,请将 resources/app/ 目录安装到 /usr/lib/应用名/。否则,请使用 /usr/share/应用名/

如果软件包包含预构建的 electron 副本,请将其整个最终发行版复制到 /opt/应用名