Electronプロジェクトのビルド
Posted
Electronプロジェクトのビルド
Electronのビルドについて。
Electronでは開発時に必要になるelectron
パッケージにはビルダーが含まれていない。electron
とは別にelectron-builder
等のビルダーを利用する必要がある(“等の"と書いたが基本的にelectron-builder
を使うと思って良し)。
electron-builder
https://github.com/electron-userland/electron-builder
インストール
これを書いている時点でパッケージマネージャはyarn
を推奨しているようだが、npm
でもインストール出来る。
$ npm install -D electron-builder
$ yarn add electron-builder --dev
使い方(CLI)
設定ファイル等の書き方は置いておいて、こういったツールはCLIコマンドが基礎にありその入力を毎回するのを避けるために設定ファイルが存在することが多い。
つまり、設定ファイルの書き方云々の前にCLIコマンドを打って、その後にそれらを設定ファイルで書くとどうなるのかを調べていくのが個人的に良いと思っている。
1.ビルド可能な簡単なelectronアプリを用意
https://www.electronjs.org/docs/tutorial/first-app
electronのtutorial辺りを見て適当なアプリを用意する
2.ビルドする
https://www.electron.build/cli#targetconfiguration
上記urlにビルド時のオプションが書かれている。package.json
をルートディレクトリにして、以下のコマンドを打つ。
// for Linux
$ npx electron-bilder build --linux (短縮は -l)
// for Mac
$ npx electron-bilder build --mac (短縮は -m)
// for Windows
$ npx electron-bilder build --widnows (短縮は -w, --win)
// for Linux,Mac,Windows
$ npx electron-bilder build -lmw
これだけで、デフォルト設定時のそれぞれのOSで動くネイティブアプリが dist
ディレクトリ下に生まれる。
中を覗いてみると、例えばlinuxの場合は配布形式としてsnap
,AppImage
に加えてパッケージ化されていないネイティブアプリ(配布時には好きな形式で圧縮すれば良い)が生成される。
基本的な使い方はこれだけで、後は不要な配布形式の製品の生成などを行わないように、オプションを加えていく。
3.設定
electron-builder
では2通りの設定の渡し方がある
package.json
にbuilder
プロパティを作ってそこに書く--config
オプションで指定したファイル(デフォルトではelectron-builder.yml
)に書く(jsonなども可)
1
の方法で紹介されていることが多いが、別にしたければ別にしても全く問題ない。以下はpackage.json
にbuild
プロパティを作った場合。
{
"name": "my_first_app",
"version": "<<書かれていることを確認>>",
"description": "<<書かれていることを確認>>",
"main": "js/main/main.js",
"scripts": {
"start": "electron .",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "<<書かれていることを確認>>",
"build": {
// ここに設定を書く
},
"license": "ISC",
"devDependencies": {
"electron": "^8.0.2",
"electron-builder": "^22.3.2"
}
}
https://www.electron.build/configuration/configuration#configuration
設定の書くオプション、詳しい書き方は上記のurlを参照すること。
基本的な書き方そしては、
- 共通の設定項目を書く
- それぞれのOSが対応するパッケージ毎の設定を書く
である。
共通の設定
共通の設定としてあるのが以下の4つ
appId
:com.electron.${name}
のような形で書くproductName
copyright
:Copyright © year ${author}
のような形で書くdirectories
appId
はMacのアプリケーションにおけるCFBundleIdentifier
に使われたり、WindowsのパッケージであるNSISにおけるApplication User Model ID
に使われたりする。
directories
はoutput
でビルドした製品の出力先ディレクトリの指定(デフォルトはdist
)、app
でアプリケーションのディレクトリ、通常はpackage.json
が置かれているディレクトリの指定(デフォルトは作業中のディレクトリまたはapp
, www
)が出来る。
以下はdirectories
を指定した場合
"build": {
"directories": {
"output": "__build"
}
}
各パッケージの設定
ビルド時にnpx electron-bilder build --linux
と打った場合、snap
,AppImage
と未パッケージのディレクトリが生成されるが、AppImage
しか必要が無かった場合、以下のように書くと良い。
"linux": {
"target": [
{
"target": "AppImage"
}
],
"maintainer": "taro yamada",
"description": "this is my first app"
}
maintainer
とdescription
も指定してあるが、それは必要に応じて。詳しくは以下のurlを参照。
https://www.electron.build/configuration/linux
使い方(Programmatic)
設定を動的にしたい、カスタムのコマンドで引数を取って色々とやりたい場合、jsでプログラムを書いてビルドすることも可能。