SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

Electronでコマンドライン引数を受け付ける方法

ちょろっとメモだけ。

process.argvのプロパティで、コマンドライン引数を取得できます。
これはElectronではなく普通にNode.jsの仕様ですね。

ただし注意すべき点がひとつ。
このアプリ起動時のコマンドライン引数ですが、BrowserProcessから実行した場合はのみちゃんと取得できます。

RendererProcessは文字通り、別プロセスでの実行となるので、当然といえば当然ですが。。。
RendererProcessで取得しようとすると、process.argvは以下のような値になってしまいます。
f:id:minami_SC:20151101180350p:plain

コマンドライン引数を付けて実行

electronコマンドで実行するときに引数を追加すると、コマンドライン引数としてBrowserProcessに渡されます。
また、electron-packagerで作ったバイナリファイルに引数をつけて実行しても同じ結果となります。

以下のように、package.jsonのstartスクリプトに引数を追加してみると、コマンドライン引数が渡されるようになります。

{
  // 省略
  "scripts": {
    "build": "tsc",
    "prestart": "npm run build",
    "start": "electron . sample"
  },
  // 省略
}
コマンドライン引数の確認

BrowserProcessのスクリプトに以下のように書いて実行してみると、コマンドライン引数が渡されてるのを確認できます。
main.ts

// コマンドライン引数をコンソールに表示
console.dir(process.argv);