electronでコマンドライン引数を処理する

JavaScript

開発中とリリース環境でアプリの挙動を変えたい場合は多い。
electron(node.js)ではどのようにするのが良いかを考える。

チュートリアル通りにelectronを作るとpackage.jsonはこうなる。

package.json

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "electron ."
  },

このままだとデバッグ用の機能をコンフィグ等に持たせないと切り替えられないため、簡単に行うためにコマンドライン引数をこんな風に指定する。

    "start": "electron . --debug"

node.jsではprocess.argvプロパティでコマンドライン引数が確認できる。
なのでmain.jsで以下のように引数が–debugを持つかどうかで処理内容を切り替えることができる。

if (process.argv.find((arg) => arg === '--debug')) {
    dataFolderPath = path.join(__dirname, '../data');
}
else{
    dataFolderPath = path.join(app.getPath('exe'), '../data');
}

アプリが吐くファイルの保存場所は
C:\Users\ユーザ名\AppData
などが指定されることが多いけれど、私はアプリの実行パスに置く方が好み。
特にインストール不要なアプリを作る時などは環境を汚されたくないため、上記のようにapp.getPath(‘exe’)で実行パス直下に適当なフォルダを作っている。

コメント