typescriptでツール開発してる時のパッケージング方法

typescriptで簡易ツール開発。いいですよね。楽。ところで配布どうします?

ツールアイコンダブルクリックで使えるようにパッケージしたいな~~~~~~~!

用意するもの

  • typescript
  • node.js
  • electron
  • electron-forge

forge以外は入れていい感じにやってる前提(この記事を書いた時の私がそうだったので)

どうやる?

typescriptでnode.js向けに書いて、electronで起動できるようにして、electron-forgeでパッケージング。
exeやappファイルを作ってお渡し

パッケージングツールいっぱいあるけど?

electron-builderとかpackagerとかね。

electron公式チュートリアルがforge推してるんでこれにしました(2022年10月18日) www.electronjs.org

コマンド?

すでにプロジェクトがあって、そこに後からforgeでパッケージを追加する形のケース

> npm install --save-dev electron-forge
...
... ## npm install のログ
...
> npx electron-forge import
✔ Checking your system
✔ Initializing Git Repository
✔ Writing modified package.json file
✔ Installing dependencies
✔ Writing modified package.json file
✔ Fixing .gitignore


We have ATTEMPTED to convert your app to be in a format that electron-forge understands.

Thanks for using Electron Forge!!!

## package.jsonにstart,package,makeコマンドが追加される。
##    "start": "electron-forge start",
##    "package": "electron-forge package",
##    "make": "electron-forge make"
> npm run make

> mytool@1.0.0 make
> electron-forge make

✔ Checking your system
✔ Resolving Forge Config
We need to package your application before we can make it
✔ Preparing to Package Application for arch: x64
✔ Preparing native dependencies
✔ Packaging Application
Making for the following targets: squirrel
✔ Making for target: squirrel - On platform: win32 - For arch: x64

### outディレクトリができて、そこにバイナリなど作成される 

出来たバイナリダブルクリックなりcliから実行なりどちらからも使えそうでした(あまりちゃんと調べてない)

> only

> npm install --save-dev electron-forge
> npx electron-forge import
> npm run make

outにめっちゃいらなそうなファイルあるけど?特に.ts

そっすね。
・・・いやわかんないんです。ごめんなさい。

多分package.jsonに書かれてるmainをnodeで起動してるぽくて、mainとかそこらへんが間違ってなきゃどんなディレクトリ構造だろうが動いてくれるくさい
多分デフォルトでpackageするとrootからすべてのファイルを実行に必要なファイルとしてresourceのappに放り込む

dist/とか特定のディレクトリを対象にパッケージさせるようなオプションあるんだろうけど、今回そこまでやるのはダルいっす。そこまでの成果は求められてないし時間も、ね。

electronなのに画面ないの????

公式はじめてガイドにconsole.log一行の例ある通り、別に必須じゃないのでランチャーとして導入全然ありじゃないですか www.electronjs.org

手抜きかって話なら、要件にないんで、ね。
必要以上のコストをかけて顧客への提供を遅らせるのは「損失」ですからね。(意識標高3776.12 m)

注意喚起

process.exit()でnode終わらせなきゃプロセス暴走する

electronのプロセスのこりっぱになる。気を付けよう!(3敗)

package.jsonは埋めてないとmakeがエラー吐く

"author": や "description": 空にしてたらエラー吐かれた(2敗)

"unko"とかでいいから適当になんかいれときましょう

ファイルサイズクソデカ

win32-x64ターゲットで217MBとかでた。どうしようもないのかな