LoginSignup
14
13

More than 3 years have passed since last update.

Electronでホットリロード開発をしたい!

Posted at

はじめに

Electronなどを使っていると
いわゆるホットリロード機能がほしくなります。

このホットリロードとは、
現在自分の扱っているElectronのディレクトリ以下にファイル変更があった場合、自動検知して、もう一度ファイル変更をそのまま実行し
いちいちCtrc-C、起動を自分でやらなくてよい!
という機能です。
うれしい。

Vue CLIなどや、Webpack --watchモードなどが特に有名だったりする気がします。

方法

ホットリロード機能を使うにはまず

npm install electron-reload

をnpmで入れてください。
electron-reloadは、ファイル変更を検知して自動更新するパッケージです。

その後、Electronのエントリポイントのファイルに
以下のような記述を行います。

main.js
const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const ipcMain = electron.ipcMain;
const fs = require('fs');

/*
*
* 第一引数がおそらく監視したいディレクトリフォルダ
* 第二引数がおそらくElectronの実行フォルダ
*
* */
require('electron-reload')(__dirname, {
    electron: require('${__dirname}/../../node_modules/electron')
});

let mainWindow = null;

app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') {
        app.quit();
    }
});

コメント文のあるrequire('electron-reload')の行を書くだけで
ホットリロードがうまく起動するようになります。

ただし、第2引数では、自分の環境では

  • グローバルにElectron
  • 自分のプロジェクトにローカルのElectron

の両方を取り入れています。
そのため、第2引数では、自分のプロジェクトのローカルのElectronを指定しています。

効果

エントリポイント、つまりメインプロセスのmain.jsに変更を行うと、Electron自体再実行されるらしく、すべてのウィンドウプロセスが消去されて自動で完全終了、完全再起動が実行されます。

ウィンドウプロセス、つまりindex.html側などの各ウィンドウのファイルを修正すると、メインプロセスには影響が出ないため、完全再起動にはならず、差分修正で非常に早いです。

まとめ

結構便利だけど、main.jsのメインプロセスの修正だと、コメント文を少し直しただけでいちいちアプリが消える->付くが繰り返されるので面倒っちゃ面倒
(研究室のパソコンが重いので辛い、家でなら全然大丈夫そう)

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13