Electron アプリのパッケージツールを electron-builder に移行

GitHub Actions で 野良 Scrapbox アプリの CI を 作った話の続きです。

blog.kondoumh.com

ほぼ同時ぐらいに azu さんが、同じテーマのブログを書かれてました。

efcl.info

僕のはビルドするところまででしたが、リリースまで実現されていて非常に参考になりました。特にパッケージツールとして使われている electron-builder が便利そうだったので早速移行することにしました。

www.npmjs.com

これまで electron-packager を使っていて electron-builder の存在は知ってたものの、試したことはありませんでした。各プラットフォームに対応した(完全に動作する)インストーラまで作ってくれます。

f:id:kondoumh:20190919214959p:plain

はなぢ出ました。

electron-packager の場合、インストーラを作成するには他の NPM パッケージとの併用が必要なので手をつけてませんでした。これでユーザーのインストール作業も簡単になります。

package.json にプラットフォーム毎の設定が書けるので npm script はプラットフォーム共通にできます。

  "build": {
    "productName": "sbe",
    "mac": {
      "icon": "icons/mac/sbe.icns"
    },
    "win": {
      "icon": "icons/win/sbe.ico"
    }
  },
  "scripts": {
    "start": "electron .",
    "pack": "electron-builder --dir",
    "dist": "electron-builder",
  },

インストーラ形式で生成されるため、各 OS のコマンドで成果物を zip 圧縮する必要もなくなりました。

おかげで GitHub Actions workflow の matrix.os による if expression も撲滅することができ、step も減らせて非常にスッキリしました。