◆ evm: インストール・アンインストールとインストール済みバージョンの表示
◆ evml: 指定バージョンの Electron で起動

Electron って本体サイズが大きいのでアプリごとにインストールするとすごくサイズを取られます
VSCode みたいな一般的なツールならそれでいいのですけど 自分で作ってるものだとちょっとしたものがいくつもある感じなので無駄が多くなります
なので Node.js や PHP みたいなランタイムとして複数アプリで使い回すことを考えてます
とは言っても 新しいバージョンが出たらそれ以降に作るものは新しいバージョンにするので アプリごとではないですが適度にバージョンも増えます
そうなるとどのアプリがどのバージョンというのを管理する必要が出てきます
また 作った環境とは別の PC で使いたいときにインストールする手間も減らしたいです
バージョン管理とランチャーツールがあったら便利かなーと思って思いつきで作りました
3, 4 時間程度で作ったシンプルなものなので ほぼ最低限の機能です

使い方

evm と evml の 2 つのコマンドがあります
evm はバージョン管理を行うコマンドで Node.js のバージョン管理ツールに近いイメージです
evml はランチャーで このコマンドの引数にアプリを指定することで指定のバージョンで起動できます

evm

機能はインストールとアンインストールとインストール済みの表示です

インストールをするには次のようなコマンドを入力します

evm install latest
evm install v5.0.8
evm install 4-2-x

バージョン名は electron-releases からチェックします
tag_name, version, npm_dist_tags のどれかに一致したらそのバージョンとしてインストールします
electron-releases は毎回最新を取得でもいいのですが 一応余計な通信を減らすためにキャッシュすることにしています
キャッシュは releases.json ファイルです
このファイルを更新するには update コマンドを使います

evm update

アンインストールする場合は latest などのタグは使えず tag_name の名前のみ受け付けます

evm uninstall v5.0.8

インストール済みバージョンの一覧を表示するには list コマンドを使います

evm list

インストールしたバージョンは evm フォルダの electrons フォルダに配置され ここのフォルダ一覧を表示してるだけです
evm を使わずに手動で追加や削除しても大丈夫です

これら以外のコマンドを使った場合は使い方のヘルプメッセージが出ます

evml

引数には package.json か package.json があるフォルダか asar ファイルを指定します

evml example-app\package.json
evml C:\tmp\example-app
evml /path/to/example-app.asar

初回起動時は Electron のバージョンを聞かれるので入力します
未インストールならインストール確認されるので yes とか ok とか入力するとインストールされます

C:\tmp\evm>evml test
Electron version: 5.0.8
"v5.0.8" はインストールされていません インストールしますか?

一度起動すると バージョン情報が保存されます
パスに対するバージョンを保存しているのでパスを変えない限りはプロンプトなしで直接 Electron が起動します
バージョン情報は launch-version.json に保存しています
途中でバージョンを変えたい場合はここを直接編集できます
対象のパスの行を削除すると再びプロンプトが出るようになります

バージョンセレクタなども Electron にして GUI アプリにしようとも考えましたが 起動が遅くなったり バージョン管理ツール自身の Electron バージョンが必要になったり複雑化するのでシンプルに CUI にしてます

package.json の evm キー

evml は package.json の evm キーに対応しています
evm キーにバージョン名を書いておけば 初回起動時にプロンプトを出す代わりに指定したバージョンを使います
あくまで初回起動時のみで 以降は初回起動時のバージョンを保存し launch-version.json から参照するので途中で evm キーを更新しても起動バージョンは変わりません
launch-version.json の方を変える必要があります

関連付け

package.json やフォルダは関連付けができませんが asar は拡張子で関連付けができるので ダブルクリックで起動もできます
フォルダや package.json だと cmd ファイルへドロップするかコマンドラインからの起動になります

Download

Gist