メインコンテンツへ飛ぶ

サポートしているコマンドラインスイッチ

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.comfoobar.combaz である 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-geolocation macOS

Disables the Geolocation API. Permission requests for geolocation will be denied internally regardless of the decision made by a handler set via session.setPermissionRequestHandler. This functionality is currently implemented only for macOS. Has no effect on other platforms.

--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プロキシ接続での CONNECTSOCKS プロキシ接続でのエンドポイントホスト) に対して適用されます。

非推奨: 代わりに --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 と一緒に使用することで、ログの詳細度を設定します。 NChromeのLogSeverities のいずれかでなければなりません。

Note that two complementary logging mechanisms in Chromium -- LOG() and VLOG() -- are controlled by different switches. --log-levelLOG() のメッセージを制御しますが、--v--vmoduleVLOG() のメッセージを制御します。 そのため、必要な詳細度やウォッチしようとしているコードで行われているロギング呼び出しに応じて、これら 3 つのスイッチを組み合わせて使用するとよいでしょう。

LOG()VLOG() の相互作用の詳細については、Chromium ロギングのソース をご参照ください。 大まかに言えば、VLOG() は大量の LOG(INFO) データを制御する LOG(INFO) 内部のサブレベル / モジュールごとのレベルと考えられます。

--enable-logging, --log-level, --v, --vmodule もご参照ください。

--no-proxy-server

プロキシサーバを使わず、常に直接接続を行います。 他に与えられたプロキシサーバのフラグをすべて上書きします。

--no-sandbox

Chromium の サンドボックス を無効化します。 レンダラープロセスと Chromium ヘルパープロセスにサンドボックスなしの実行を強制します。 テスト時のみ使用すべきです。

--no-stdio-init

Disable stdio initialization during node initialization. Used to avoid node initialization crash when the nul device is disabled on Windows platform.

--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')

ローカルアドレス (localhost127.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:port127.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

Enable support for DevTools network inspector events, for visibility into requests made by the nodejs http and https modules.

--experimental-inspector-network-resource

Enable support for resolving source maps over the network when using the Node.js inspector.

When enabled, DevTools can retrieve remote source maps for main and utility process scripts via the Node.js inspector.

Note: When enabled, the Node.js inspector will make network requests to URLs specified in source maps. Be mindful of this in environments where the process has access to internal networks.

--no-deprecation

非推奨の警告を抑制します。

--throw-deprecation

非推奨をエラーとしてスローします。

--trace-deprecation

非推奨のスタックトレースを出力します。

--trace-warnings

プロセス警告 (非推奨を含む) のスタックトレースを出力します。

--dns-result-order=order

Node.js の dns.lookup() 関数と dnsPromises.lookup() 関数の verbatim 引数の既定値を設定します。 この値は次のいずれかにできます。

  • ipv4first: 既定の verbatimfalse にします。
  • verbatim: 既定の verbatimtrue にします。

既定は verbatim で、--dns-result-order よりも dns.setDefaultResultOrder() の方が優先順位が高いです。

--diagnostic-dir=directory

すべての Node.js 診断出力ファイルを書き込むディレクトリを設定します。 デフォルトは現在のワーキングディレクトリです。

v8.setHeapSnapshotNearHeapLimit のデフォルトの出力ディレクトリに影響します。

--no-experimental-global-navigator

Node.js からのグローバルスコープでの Navigator API の公開を無効化します。

--experimental-transform-types

Enables the transformation of TypeScript-only syntax into JavaScript code.

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 のバージョンが、スイッチの相互参照に使用しているブラウザのバージョンと一致していることを確認する必要があります。

Chromium features relevant to Electron apps

  • AlwaysLogLOAFURL: enables script attribution for long-animation-frame PerformanceObserver events for non-http(s), non-data, non-blob URLs (such as file: or custom protocol URLs).