Electron パッケージガイドライン

提供: ArchWiki
ナビゲーションに移動 検索に移動

このドキュメントでは ElectronPKGBUILD を書く時の標準とガイドラインについて触れています。

Electron システムを使う

Arch Linux には electronelectron2AUR パッケージがあり、これらを使うことでシェルスクリプトのラッパーを介して Electron アプリケーションを実行できます:

#!/bin/sh

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

appname/ ディレクトリあるいは appname.asar という名前のファイルバンドルは resources/app/ フォルダ (または resources/app.asar) などのビルド済み Electron アプリケーションとして存在します。他のファイルは全て Electron ランタイムのコピーであり、パッケージからは削除しても問題ありません。

コンパイル済みの拡張をシステムの Electron でビルド

一部の Electron アプリケーションは Electron ランタイムにリンクされたコンパイル済みのネイティブ拡張を含んでおり、適切なバージョンの Electron を使ってビルドする必要があります。npm/yarn は常にビルド済みのプライベートな Electron コピーでビルドしてしまうため、package.json から Electron の依存関係にパッチをあてて、システムの Electron と同じバージョンを使うようにしてください。ビルドシステムは必要なビルド済みコピーをダウンロードして、ネイティブ拡張をコンパイルし、パッケージを作成するので、package() で不要なファイルを削除します。

もしくは、package.json から Electron の依存を削除して、npm の実行前に環境変数を設定することもできます:

export npm_config_target=$(cat /usr/lib/electron/version | tail -c +2)
export npm_config_arch=x64
export npm_config_target_arch=x64
export npm_config_disturl=https://atom.io/download/electron
export npm_config_runtime=electron
export npm_config_build_from_source=true
HOME="$srcdir/.electron-gyp" npm install

HOME$srcdir のパスに設定することで、ビルド時に HOME ディレクトリにファイルが作られなくなります。.electron-gyp キャッシュを利用するコマンドのパスは調整してください。

詳しくは こちら を参照。

electron-builder と system electron の併用について

多くのプロジェクトでは、Javascript ファイルと Electron バイナリのビルドとパッケージ化に electron-builder を使用しています。デフォルトでは、electron-builder はパッケージ管理ファイル (例:package.json) で定義されている electron の全バージョンをダウンロードします。これは、electron バイナリを、システム electron が使うためで、一見、帯域幅を節約したくなりますが、それは望ましくありません。electron-builder は、Electron のカスタムパスとアプリケーションがパッケージされているバージョンをそれぞれ指定するために、electronDistelectronVersion のコンフィギュレーションを提供します。

electron-builder の設定ファイル(例:electron-builder.json)を探して、以下の設定を追加してください。

  • electron の場合は /usr/lib/electron に、electron2AUR の場合は /usr/lib/electron2 に設定してください。
  • electronVersion/usr/lib/electron/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

これらのオプションをすべて指定しないと、動作しないので注意してください。

これを適用するパッケージ deezloader-remix-gitAUR です。

アーキテクチャ

PKGBUILD#arch を見てください。

コンパイル済みのネイティブ拡張を含む Electron パッケージはアーキテクチャに依存します。他のパッケージはアーキテクチャに依存しません。

パッケージにビルド済みの Electron のコピーが含まれる場合、常にアーキテクチャに依存しています。

ディレクトリ構造

パッケージがアーキテクチャ依存の場合、resources/app/ ディレクトリを /usr/lib/appname/ にインストールしてください。非依存の場合は /usr/share/appname/ を使ってください。

パッケージにビルド済みの Electron のコピーを含む場合、全て /opt/appname にコピーしてください。