electronで起動する場合と、ビルドしたアプリでは引数の位置が変わる。
Electron で起動する場合
$ electron . 引数...
パッケージで起動する場合
$ sample-app 引数...
これは以下の記事で言及されている。
以前書いたアプリでは開発環境の場合のみ、引数を2つにするようにし、それをminimist
でパースして使っていた。
const minimist = require('minimist');
const args = minimist(process.argv.slice(process.env.NODE_ENV === 'development' ? 2 : 1));
ただ、パースだけしても--version
とか--help
とか基本的な処理を毎回書きたくないので、electron用のコマンドラインヘルパを作成した。
akameco/electron-args: CLI helper for electron
インストール
$ npm install --save electron-args
使い方
以下の例はコマンドラインの引数でqiitaかgithubのユーザページを開くサンプル。
'use strict';
const electron = require('electron');
const parseArgs = require('electron-args');
const cli = parseArgs(`
sample-app
open github or qiita
Usage
$ sample-app [path]
Options
--help show help
--version show version
--github,-g open github [Default: true]
--qiita,-q open qiita [Default: false]
Examples
$ sample-app akameco
$ sample-app akameco --qiita
`, {
alias: {
h: 'help',
q: 'qiita',
g: 'github'
},
default: {
qiita: false,
github: true
}
});
console.log(cli.flags);
console.log(cli.input[0]);
if (!cli.input[0]) {
console.log('input required');
process.exit(1);
}
electron.app.on('ready', () => {
const win = new electron.BrowserWindow({width: 800, height: 600});
const target = cli.flags.qiita ? 'https://qiita.com/' : 'https://github.com/';
win.loadURL(target + cli.input[0]);
});
戻り値のオブジェクト
input
: フラグなしの入力
flags
: フラグ
help
: ヘルプのテスト。--helpで出力してアプリを終了する。
electron
もしくはelectron-prebuild
から起動されているかで引数の数を調整。
パーサはminimist
。第二引数はminimist
のオプションなので、default
やalias
を設定可能。
--version
とすれば、electronのアプリのapp.getVersion()
で得られるバージョンを出力する。
あとは、jsなので基本的にキャメルケースがうれしいので、--fuga-hoge
みたいなのをfugaHoge
と得られる。
注意点
app.on('ready')
より前に書くこと。
electronが起動してしまうと出力が奪われて、console.log
がターミナルに出力されない。