跳转至内容

Electron 包指南

来自 ArchWiki
Arch 软件包指南

32 位CLRCMake交叉编译DKMSEclipse 插件Electron字体Free PascalGNOMEGoHaskellJavaKDE内核模块LispMesonMinGWNode.js非免费应用OCamlPerlPHPPythonRRubyRust - 安全ShellVCSWeb 应用Wine

本文档涵盖了编写 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 运行时的副本,可以从最终包中移除。

注意 需要 ELECTRON_RUN_AS_NODE=1 的应用程序,例如 Visual Studio Code,不能使用 /usr/bin/electron*。请参阅 code.sh

编辑 package.json 中的版本

使用 sed 编辑 package.jsonpackage-lock.json 中的 Electron 版本是危险的。您可以使用 npm pkg set devDependencies.electron=$(cat /usr/lib/electron*/version) 来代替。

本文或本章节的准确性存在争议。

原因:编辑 package.json 可能不需要,并且与正确构建模块无关。(在 Talk:Electron package guidelines 中讨论)

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

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

  • electronDist 设置为 /usr/lib/electron34,用于 electron34
  • electronVersion 设置为 /usr/lib/electron34/version 的内容(如果存在,则不带前导 v)。

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

electron-builder 配置

或者,您可以使用 CLI 以这种方式更改/添加这些设置:

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

请注意,您必须指定所有这些选项,否则将不起作用。

本文或本章节的准确性存在争议。

原因:当前设置仍然从 $electronDist 复制 Electron。添加停止它的方法已经过时。(在 Talk:Electron package guidelines 中讨论)

本文或本章节的准确性存在争议。

原因:使用 Arch 的 Electron 进行打包会丢弃 electron-builder 翻转的熔断位 [1]。某些位应通过在启动器中包含环境变量来模拟。(在 Talk:Electron package guidelines 中讨论)

Architecture

请参阅 PKGBUILD#arch

包含编译原生扩展的 Electron 包是依赖于体系结构的。否则,它最可能是独立于体系结构的。

如果包包含预构建的 electron 副本,则它始终依赖于体系结构。

目录结构

如果包依赖于体系结构,则将 resources/app/ 目录安装到 /usr/lib/appname/。否则,使用 /usr/share/appname/

如果包包含预构建的 electron 副本,则将整个最终发行版复制到 /opt/appname

获取 Electron 版本

Electron 的版本可以通过包含 package.jsonpackage-lock.json 的目录中的 npm pkg get devDependencies.electron 来提供。

预构建或非免费应用程序会隐藏 package.jsonpackage-lock.jsonversion 文件中的 electron 版本。在这种情况下,您可以通过将 appapp.asar 替换为 /usr/lib/electron/resources/default_app.asar 并运行 pathto/electron-binary --version 来获取版本。

注意 避免在 PKGBUILD 中执行此操作。这应该是使包与系统范围的 electron 一起工作的最后手段。

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.