Electron+Reactでアプリを開発する

・debian 12.6
・vscode 1.89.1
・node 20.13.1
・typescript 5.4.5
・vite 5.2.12
・react 18.3.3
・electron 30.0.9

viteでプロジェクトを作成する。

$ npm create vite sample-app -- --template react-ts

electronをインストールする。

$ cd sample-app
$ npm install --save-dev electron electron-builder

electron用のディレクトリを作成する。

$ mkdir electron/

electronに必要なファイルを作成する。

プロジェクトルートにあるtsconfig.jsonに作成したディレクトリを追加する。

    …
    "include": ["src", "electron"],
    …

preload.tsに定義されたAPIの動作確認のため、App.tsxの適当な場所に下記を追記する。

    …
    <button onClick={() => { alert(window.counterAPI.count()) }}>
        counting via API
    </button>
    …

vite.config.tsに相対パスを使用する定義と、Reactのビルド出力先の定義を追記する。

…
export default defineConfig({
  plugins: [react()],
  base: "./",
  build: {
    outDir: "build/"
  }
})

package.jsonにtypeとmainを定義する。typeはデフォルトでcjsなので削除してしまっても良い。

    …
    "type": "commonjs",
    "main": "build/electron/main.js",
    …

package.jsonに開発用とビルド用のスクリプトを追記する。

    …
    "scripts": {
        …
        "electron:dev": "tsc -p electron/ && electron . & vite",
        "electron:build": "tsc && vite build && tsc -p electron/ && electron-builder --dir"
    },
    …

package.jsonにビルドに必要な情報を追記する。

    …
    "build": {
        "appId": "com.example.sample-app",
        "productName": "SampleApp",
        "files": [
            "build/**/*"
        ]
    },
    …

reactのホットリロードを利用して開発用にアプリを起動する。

$ npm run electron:dev

アプリをビルドする。

$ npm run electron:build