環境
- Vue: 2.6.11
- Electron: 13.0.0
- Vue CLI Plugin Electron Builder: 2.1.1
状況
Electronでの重要な要素の1つに、IPC通信というものがあります。詳細は、下記記事などが参考になります。
上記記事でも述べられていますが、現在、ElectronでIPC通信を行うときは、contextBridgeを使うことが推奨されています。そして、そのcontextBridgeを使うときは、preloadスクリプトというものを用意します。
以下、メモ書きで恐縮ですが、Vue CLI Plugin Electron Builderを使ってTypeScriptで開発するときに、preloadスクリプトの設定方法を記します。
設定方法
1. preload.ts
を作成する
background.ts
と同じディレクトリに作成します。
import { contextBridge, ipcRenderer, IpcRendererEvent } from "electron";
// 以下、contextBridgeを使ったコード
2. メインプロセスにpreloadを追加
background.ts
内でBrowserWindow
をインスタンス化している部分に、preload
オプションを追記します。preload.ts
ではなく、preload.js
である点に注意。
+ import path from 'path'
const win = new BrowserWindow({
width: 800,
height: 600,
useContentSize: true,
webPreferences: {
+ preload: path.join(__dirname, 'preload.js'),
},
})
3. プラグインにオプションを追加
vue.config.js
内に、Electron Builderプラグイン用のオプションを追記します。設定可能なオプションは多数ありますが、その中の1つであるpreload
オプションを追記します。
module.exports = {
+ pluginOptions: {
+ electronBuilder: {
+ preload: 'src/preload.ts',
+ },
+ },
}
preloadオプションについては、Electron Builderのドキュメントにも記述されています。