Ionic Reactで作ったSPAをCapacitorでElectron(デスクトップアプリ)にする
Capacitorを使うことで、iOSやandroid / デスクトップ向けのアプリを作ることができます。ということで、Ionic Reactで作ったアプリをMacのデスクトップアプリとしてビルドしてみました。 Capa […]
目次
Capacitorを使うことで、iOSやandroid / デスクトップ向けのアプリを作ることができます。ということで、Ionic Reactで作ったアプリをMacのデスクトップアプリとしてビルドしてみました。
Capacitorを有効化する
まずCapacitorをIonicプロジェクト側で有効化しておきます。すでに有効化されていても問題ないコマンドなので、不安ならとりあえず実行しておきましょう。
$ ionic integrations enable capacitor
CapacitorでElectronを追加する
cap add
コマンドで対応するプラットフォームを追加します。
$ npx cap add electron
✔ Installing NPM Dependencies in 50.97s
✔ add in 50.98s
✔ Copying web assets from build to electron/app in 74.63ms
✔ Copying capacitor.config.json in 1.42ms
✔ copy in 78.75ms
✔ update electron in 91.89μp
Electronを指定すると、 electron
ディレクトリができました。
% tree electron -L 1
electron
├── app
├── capacitor.config.json
├── index.js
├── node_modules
├── package-lock.json
├── package.json
└── splash_assets
3 directories, 4 files
Electron側が読んでいるアプリのコードはどこにあるのか?
ざっとみた感想ですが、どうやら /build
にあるビルドされたアプリのコードを./electron/app
にコピーしている様子です。
なのでアプリのコードを変更した場合は次の3コマンドを打つ必要がありそうです。
$ yarn run build // or ionic build
$ npx cap copy
$ npx cap open electron
一部ファイルの変更
Ionic ReactのSPAはそのままビルドするだけではElectronで動かない様子です。
なので2ファイルほど変更を入れます。
参考:https://github.com/ionic-team/ionic/issues/19767#issuecomment-571812776
public/index.html
: Baseタグを相対パスに
baseタグを以下のように変更します。
% git diff public/index.html
diff --git a/public/index.html b/public/index.html
index 25b753b..f2ab8ed 100644
--- a/public/index.html
+++ b/public/index.html
@@ -3,8 +3,7 @@
<head>
<meta charset="utf-8" />
<title>Ionic App</title>
-
- <base href="/" />
+ <base href="./" />
<meta name="color-scheme" content="light dark" />
<meta
package.json
: homepageプロパティの追加
% git diff package.json
diff --git a/package.json b/package.json
index 0bca5d1..27c1f90 100644
--- a/package.json
+++ b/package.json
@@ -2,6 +2,7 @@
"name": "ionic-react-wordpress",
"version": "0.0.1",
"private": true,
+ "homepage": "./",
"dependencies": {
"@capacitor/core": "2.0.1",
"@ionic/react": "^5.0.7",
ローカルで実行する
あとはcap open electron
を実行すればOKです。
$ ionic build
$ npx cap copy
$ npx cap open electron
うまく動けば、Ionic Reactで作ったアプリがデスクトップアプリとして動き出します。
ビルド・パッケージング
せっかくなのでパッケージにしてみます。
electron-packager
というCLIを使うのが簡単そうだったので、今回はこれを利用しました。
$ cd electron
$ npx electron-packager . sample --platform=darwin --arch=x64
$ tree ./sample-darwin-x64 -L 2
./sample-darwin-x64
├── LICENSE
├── LICENSES.chromium.html
├── sample.app
│ └── Contents
└── version
2 directories, 3 files
$ open ./sample-darwin-x64
最後のopenコマンドでディレクトリを開くと、デスクトップアプリケーションが1つ出来上がっているのがわかります。