LoginSignup
10
8

More than 5 years have passed since last update.

electronにおけるコマンドライン引数の位置とパーサ

Last updated at Posted at 2016-08-22

electronで起動する場合と、ビルドしたアプリでは引数の位置が変わる。

Electron で起動する場合

$ electron . 引数...

パッケージで起動する場合

$ sample-app 引数...

これは以下の記事で言及されている。

SeaPig 開発中の困ったメモ - Qiita

以前書いたアプリでは開発環境の場合のみ、引数を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のオプションなので、defaultaliasを設定可能。

--versionとすれば、electronのアプリのapp.getVersion()で得られるバージョンを出力する。

あとは、jsなので基本的にキャメルケースがうれしいので、--fuga-hogeみたいなのをfugaHogeと得られる。

注意点

app.on('ready')より前に書くこと。
electronが起動してしまうと出力が奪われて、console.logがターミナルに出力されない。

参考

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8