⚒️

Electron-builderでパッケージに「含めたくない」ファイルを指定する

2022/05/16に公開

Electronでアプリ開発を行っているうちに、アプリとは関係ないファイルがソースフォルダに含まれている ということも多いと思います。
そういうとき、Electron-builderでパッケージに「含めたくない」ソースファイルがあるのではないでしょうか?
今回のはそういうときのpackage.jsonの書き方です。

Electron-builderのファイル構成

まずElectron-builderのファイル構成の話し。Electron-builderでは、次のようなコマンドでJavaScriptを実行可能な形式でまとめてくれます。

Windowsパッケージをビルドする場合(事前にElectron-Builderをインストールしておくこと)
npx electron-builder --win --x64 --dir

ただし、何もせずにこのコマンドを実行すると、プロジェクトフォルダのすべてのファイルをパッケージしてしまうため、過去の配布用アーカイブファイルや、テストのスクリプトを含めてしまいます。

asar

ソースファイル一式はresources\app.asarというファイルに格納されます。この中身はnpmでインストール可能なasarというコマンドを使って展開することができます。

asarコマンドの使用例
asar extract .\dist\win-unpacked\resources\app.asar .\dist\asar\

asarファイルに含めないパッケージを指定する

asarファイルに特定のファイルを含めたくない という場合は、package.jsonにその旨を指定します。
Electron-builderが見てくれるpackage.jsonの設定にFilesという項目があるので、そこに値を設定します。「含めたくない」ファイルおよびフォルダのパスを指定する場合は、ファイル名の先頭に!を記述します。

package.json
{
  "//" : "前略",
  "devDependencies": {
    "electron": "^18.1.0",
    "electron-builder": "^23.0.3"
  },
  "build": {
    "//" : "以下の記述でファイル・フォルダを除外します(ここではdist, outフォルダとREADME.mdを除外している)"
    "files": [
      "!dist/*", 
      "!out/*",
      "!README.md",
    ],
    "win": {
      "icon": "res\\Application.png",
      "target": "portable"
    }
  }
}

このように記述後npx electron-builder --win --x64 --dirを実行し、出力されたresources/app.asarを展開すると、しっかりこれらのフォルダは含まれていません。

参考資料

Discussion