サポートしているコマンドラインスイッチ
Electronによってサポートされているコマンドラインスイッチ。
app モジュールで ready イベントが発生する前に、アプリのメインスクリプトで app.commandLine.appendSwitch を使うと、以下のようにコマンドラインスイッチを追加できます。
const { app } = require('electron')
app.commandLine.appendSwitch('remote-debugging-port', '8315')
app.commandLine.appendSwitch('host-rules', 'MAP * 127.0.0.1')
app.whenReady().then(() => {
// コードをここに
})
Electron CLI フラグ
--auth-server-whitelist=url
統合認証が有効であるサーバーのコンマ区切りのリスト。
以下がその例です。
--auth-server-whitelist='*example.com, *foobar.com, *baz'
末尾が example.com、foobar.com、baz である url は、統合認証の対象になります。 * のプリフィックスがない場合は、URL は厳密に一致する必要があります。
--auth-negotiate-delegate-whitelist=url
ユーザー資格情報の委任が必要なサーバのコンマ区切りリスト。 * のプリフィックスがない場合は、URL は厳密に一致する必要があります。
--disable-ntlm-v2
POSIX プラットフォーム向けに NTLM v2 を無効化します。他プラットフォームでの効果はありません。
--disable-http-cache
HTTPリクエストに対するディスクキャッシュを無効にします。
--disable-http2
HTTP/2 および SPDY/3.1 プロトコルを無効にします。
--disable-renderer-backgrounding
Chromiumが隠れたページのレンダラープロセスの優先順位を下げるのを防止します。
このフラグはすべてのレンダラープロセスに影響を及ぼすので、1つのウインドウの制限を無効にしたいだけの場合、無音のオーディオを再生するというテクニックを使うことができます。
--disk-cache-size=size
ディスクキャッシュによって使用されるバイト単位での最大のディスク容量を強制的に設定します。
--enable-logging[=file]
標準エラー出力 (またはログファイル) に Chromium のログを出力します。
ELECTRON_ENABLE_LOGGING 環境変数への設定は --enable-logging を渡すのと同じ効果です。
--enable-logging を渡すと、標準エラー出力にログを出力すます。 --enable-logging=file を渡すと、ログは --log-file=... で指定したファイルに、--log-file が未指定の場合はユーザデータディレクトリの electron_debug.log に保存されます。
[!NOTE] Windows では、子プロセスからのログを標準エラー出力に送信できません。 Windows でのログ収集は、ファイルへのログ出力が最も信頼できる方法です。
--log-file, --log-level, --v, --vmodule もご参照ください。
--force-fieldtrials=trials
フィールド トライアルを強制的に有効または無効にします。
例: WebRTC-Audio-Red-For-Opus/Enabled/
--host-rules=rules 非推奨
ホスト名をどのようにマッピングするかを制御する rules のコンマ区切りのリスト。
以下がその例です。
MAP * 127.0.0.1は、すべてのホスト名を強制的に127.0.0.1にマッピングします。MAP *.google.com proxyは、すべてのgoogle.comのサブドメインを強制的に "proxy" で解決されるようにします。MAP test.com [::1]:77は "test.com" を強制的に IPv6 ループバックへ解決されるようにします。 また、ソケットアドレスのポートを 77 に強制します。MAP * baz, EXCLUDE www.google.comは、"www.google.com" 以外のすべてを "baz" に再マッピングします。
これらのマッピングは、ネットワークリクエストのエンドポイントのホスト (直接接続でのTCP接続とホストリゾルバー、HTTPプロキシ接続での CONNECT、SOCKS プロキシ接続でのエンドポイントホスト) に対して適用されます。
非推奨: 代わりに --host-resolver-rules スイッチを使用してください。
--host-resolver-rules=rules
ホスト名をどのようにマッピングするかを制御する rules のコンマ区切りのリスト。
以下がその例です。
MAP * 127.0.0.1は、すべてのホスト名を強制的に127.0.0.1にマッピングします。MAP *.google.com proxyは、すべてのgoogle.comのサブドメインを強制的に "proxy" で解決されるようにします。MAP test.com [::1]:77は "test.com" を強制的に IPv6 ループバックへ解決されるようにします。 また、ソケットアドレスのポートを 77 に強制します。MAP * baz, EXCLUDE www.google.comは、"www.google.com" 以外のすべてを "baz" に再マッピングします。
これらの rules はホストのリゾルバにのみ適用されます。
--ignore-certificate-errors
証明書関連のエラーを無視します。
--ignore-connections-limit=domains
, で区切られた domains リストに対する接続数の制限を無視します。
--js-flags=flags
V8 エンジン へ渡されるフラグを指定します。 メインプロセスで flags を有効にするには、起動時にこのスイッチを渡さなければなりません。
$ electron --js-flags="--harmony_proxies --harmony_collections" your-app
node --v8-options または electron --js-flags="--help" をターミナルで実行すると、利用可能なフラグの一覧が表示されます。 これらは、早期段階の JavaScript 機能の有効化や、ガベージコレクションのログと操作に利用できます。
例えば、V8 の最適化と最適化解除をトレースするには以下のようにします。
$ electron --js-flags="--trace-opt --trace-deopt" your-app
--lang
カスタムロケールを設定します。
--log-file=path
--enable-logging が指定された場合、ログを指定のパスに書き込みます。 その親ディレクトリは存在していなければなりません。
環境変数 ELECTRON_LOG_FILE への設定は、このフラグを渡すことと等価です。 両方とも存在する場合はコマンドラインスイッチを優先します。
--log-net-log=path
保存されるネットワークログイベントを有効にし、path にそれらを書き込みます。
--log-level=N
--enable-logging と一緒に使用することで、ログの詳細度を設定します。 N は ChromeのLogSeverities のいずれかでなければなりません。
注意として、Chromium の 2 つの相補的なログメカニズムである LOG() と VLOG() は、それぞれ別のスイッチで制御しています。 --log-level は LOG() のメッセージを制御しますが、--v と --vmodule は VLOG() のメッセージを制御します。 そのため、必要な詳細度やウォッチしようとしているコードで行われているロギング呼び出しに応じて、これら 3 つのスイッチを組み合わせて使用するとよいでしょう。
LOG() と VLOG() の相互作用の詳細については、Chromium ロギングのソース をご参照ください。 大まかに言えば、VLOG() は大量の LOG(INFO) データを制御する LOG(INFO) 内部のサブレベル / モジュールごとのレベルと考えられます。
--enable-logging, --log-level, --v, --vmodule もご参照ください。
--no-proxy-server
プロキシサーバを使わず、常に直接接続を行います。 他に与えられたプロキシサーバのフラグをすべて上書きします。
--no-sandbox
Chromium の サンドボックス を無効化します。 レンダラープロセスと Chromium ヘルパープロセスにサンドボックスなしの実行を強制します。 テスト時のみ使用すべきです。
--proxy-bypass-list=hosts
セミコロン区切りで与えられたホストに対してプロキシサーバを回避するように Electron へ指示します。 このフラグは —proxy-server と共に使用される場合のみ有効です。
以下がその例です。
const { app } = require('electron')
app.commandLine.appendSwitch('proxy-bypass-list', '<local>;*.google.com;*foo.com;1.2.3.4:5678')
ローカルアドレス (localhost、127.0.0.1 など)、google.com のサブドメイン、foo.com で終わるホストと 1.2.3.4:5678 を除く、すべてのホストに対してプロキシサーバーが使用されます。
--proxy-pac-url=url
指定した url のPACスクリプトを使用します。
--proxy-server=address:port
システム設定よりも優先して、指定したプロキシサーバーを使用します。 このスイッチは、HTTPSとWebSocketリクエストを含むHTTPプロトコルでのリクエストにしか影響しません。 また、すべてのプロキシサーバーがHTTPSとWebSocketリクエストに対応している訳ではないことにも注意してください。 プロキシ URL は 各 Chromium issue でのユーザー名とパスワードによる認証をサポートしていません。
--remote-debugging-port=port
指定された port でHTTP越しのリモートデバッグを有効にします。
--v=log_level
既定で有効な最高の V ロギングレベルを設定します。既定値は 0 です。 通常、正の値は V ロギングレベルに使用されます。
このスイッチは、--enable-logging が一緒に渡されたときのみ機能します。
--enable-logging, --log-level, --vmodule もご参照ください。
--vmodule=pattern
--v で指定された値を上書きするモジュール単位の最大のVログレベルを指定します。 以下は例です。 my_module=2,foo*=3 は、my_module.* と foo*.* のソースファイルにあるすべてのコードのログレベルを変更します。
スラッシュまたはバックスラッシュを含むパターンは、モジュールだけでなく全体のパス名に対してテストされます。 以下は例です。 */foo/bar/*=2 は、foo/bar ディレクトリの下にあるソースファイルのすべてのコードのログレベルを変更します。
このスイッチは、--enable-logging が一緒に渡されたときのみ機能します。
--enable-logging, --log-level, --v もご参照ください。
--force_high_performance_gpu
複数のGPUが利用可能な場合、離散GPUを強制的に使用します。
--force_low_power_gpu
複数のGPUが利用可能な場合、統合GPUを強制的に使用します。
--xdg-portal-required-version=version
XDG ポータル実装の最小必要バージョンを version に設定すると、Linux 上のファイルダイアログで XDG ポータルのバックエンドを使用します。 必要バージョンが利用できない場合、ファイルのダイアログはデスクトップ環境に応じて GTK または KDE を使用するようにフォールバックします。 現在の省略値は 3 です。
Node.js フラグ
Electron は Node.js でサポートされている CLI フラグ の一部をサポートしています。
[!NOTE] 未サポートのコマンドラインスイッチを Electron に渡しても、
ELECTRON_RUN_AS_NODEで実行していないときは効果がありません。
--inspect-brk[=[host:]port]
host:port でインスペクタを起動し、ユーザスクリプトの開始時にブレークします。 host:port の省略値は 127.0.0.1:9229 です。
--debug-brk=[host:]port のエイリアスです。
--inspect-brk-node[=[host:]port]
host:port でインスペクタを起動し、インスペクタが利用可能になったときに実行される最初の内部 JavaScript スクリプトの開始時にブレークします。 既定の host:port は 127.0.0.1:9229 です。
--inspect-port=[host:]port
インスペクタが起動したときに使用する host:port を設定します。 SIGUSR1 シグナルを送信してインスペクタを起動するときに便利です。 host の省略値は 127.0.0.1 です。
--debug-port=[host:]port のエイリアスです。
--inspect[=[host:]port]
host:port でインスペクタを有効にします。 省略値は 127.0.0.1:9229 です。
V8 インスペクタの統合により、Chrome デベロッパー ツールや IDE などのツールで Electron インスタンスのデバッグやプロファイルが可能になりました。 ツールは TCP ポートを介して Electron インスタンスにアタッチされ、Chrome デベロッパー ツールプロトコル で通信します。
詳細は メインプロセスのデバッグ ガイドを参照してください。
--debug[=[host:]port] のエイリアスです。
--inspect-publish-uid=stderr,http
インスペクタの WebSocket URL の公開方法を指定します。
デフォルトでは、インスペクタの WebSocket URL は標準エラーで、http://host:port/json/list の /json/list エンドポイント下にあります。
--experimental-network-inspection
開発者ルールのネットワークインスペクタのイベントのサポートを有効にして、nodejs の http および https モジュールでリクエストを可視化します。
--no-deprecation
非推奨の警告を抑制します。
--throw-deprecation
非推奨をエラーとしてスローします。
--trace-deprecation
非推奨のスタックトレースを出力します。
--trace-warnings
プロセス警告 (非推奨を含む) のスタックトレースを出力します。
--dns-result-order=order
Node.js の dns.lookup() 関数と dnsPromises.lookup() 関数の verbatim 引数の既定値を設定します。 この値は次のいずれかにできます。
ipv4first: 既定のverbatimをfalseにします。verbatim: 既定のverbatimをtrueにします。
既定は verbatim で、--dns-result-order よりも dns.setDefaultResultOrder() の方が優先順位が高いです。
--diagnostic-dir=directory
すべての Node.js 診断出力ファイルを書き込むディレクトリを設定します。 デフォルトは現在のワーキングディレクトリです。
v8.setHeapSnapshotNearHeapLimit のデフォルトの出力ディレクトリに影響します。
--no-experimental-global-navigator
Node.js からのグローバルスコープでの Navigator API の公開を無効化します。
Chromium のフラグ
すべての Chromium スイッチの文書化されたリストはありませんが、それらを見つける方法はいくつかあります。
最も簡単な方法は、Chromium のフラグのページを使用することです。そのページは about://flags でアクセスできます。 これらのフラグはスイッチの名前と直接一致しませんが、プロセスのコマンドライン引数を示します。
これらの引数を確認するには、about://flags でフラグを有効にし、Chromium の about://version に移動します。 --flag-switches-begin --your --list --flag-switches-end などのコマンドライン引数のリストが表示され、これにはフラグが有効にしたスイッチのリストが含まれています。
ほとんどのフラグは --enable-features= の一部として含まれていますが、--enable-experimental-web-platform-features などの独立したスイッチもあります。
フラグの完全なリストは Chromium のフラグのメタデータのページ にありますが、このリストにはプラットフォーム、環境、GPU 固有、期限切れ、機能しない可能性のあるフラグが含まれています。大体のものはあらゆる状況で常に機能すると限りません。
独立したスイッチは将来個々の機能へ分割されることがあるため、スイッチの完全なリストは存在しないことに注意してください。
最後に、Electron の Chromium のバージョンが、スイッチの相互参照に使用しているブラウザのバージョンと一致していることを確認する必要があります。