takashiskiのブログ

覚書の殴り書き

electronでファイル書き込みを行うとアプリが再起動されてしまう問題を解決する

はじめてのelectronアプリケーションを開発中、「ファイルに書き込みを行うとウィンドウが初期化される?」という挙動が発生しました。

雑にググったら見事に同じことではまって自己解決した方の話を見つけたのでメモします。

stackoverflow.com

原因

electron-reload でした。

開発向けには、ファイルが変更されたらリロードされると便利ということで electron-reload の導入が行われることが多いようで、私も何かの記事を読んだ際に導入していました。

github.com

さらに具体的に何が悪かったかというと、プロジェクトディレクトリ(node_modules/とメインファイルを除く)のすべてがデフォルトの監視対象であるということでした。

対策

options一覧に何故か書かれていませんが、無視するファイルを指定するオプションがありました。 オプション未指定の場合は以下のようになるようです。

{ignored: /node_modules|[\/\\]\./, argv: []}

これは、内部的には chokidar のignoredに渡されているようです。

github.com

前述の例は、node_modulesとdotfilesを無視したいようです*1

なので、追加で out/以下を無視したい場合は以下のようになることが考えられます。

{ignored: /out|node_modules|^[\/\\]\./, argv: []}

このオプションを第2引数に与えたところ、今のところはout/以下に書き出す分には問題になっていません。

*1:^がないのでうまく動いてるかは知らない