跳转至

支持的命令行开关

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(() => {
  // Your code here
})

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-geolocation macOS

禁用地理位置 API。无论通过 session.setPermissionRequestHandler 设置的处理器做出何种决定,地理位置权限请求都会在内部被拒绝。此功能目前仅针对 macOS 实现。对其他平台无效。

--disable-renderer-backgrounding

防止 Chromium 降低不可见页面的渲染进程优先级。

此标志对所有渲染进程全局生效。如果你只想在一个窗口中禁用节流,可以采用播放静音音频这一技巧。

--disk-cache-size=size

强制指定磁盘缓存可使用的最大磁盘空间,单位为字节。

--enable-logging[=file]

将 Chromium 的日志打印到 stderr(或日志文件)。

ELECTRON_ENABLE_LOGGING 环境变量与传递 --enable-logging 的效果相同。

传递 --enable-logging 会将日志打印到 stderr。传递 --enable-logging=file 会将日志保存到 --log-file=... 指定的文件,或者在 --log-file 未指定时保存到用户数据目录中的 electron_debug.log。

[!NOTE] 在 Windows 上,子进程的日志无法发送到 stderr。 将日志写入文件是在 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 将所有内容重新映射到 "baz",但 "www.google.com" 除外。

这些映射适用于网络请求中的端点主机(直接连接中的 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 将所有内容重新映射到 "baz",但 "www.google.com" 除外。

这些 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 中两种互补的日志机制——LOG() 和 VLOG()——由不同的开关控制。--log-level 控制 LOG() 消息,而 --v 和 --vmodule 控制 VLOG() 消息。因此,你可能需要根据所需的粒度以及你试图观察的代码所发出的日志调用,组合使用这三个开关。

有关 LOG() 和 VLOG() 如何交互的更多信息,请参阅 Chromium 日志源代码。粗略地说,VLOG() 可以被视为 LOG(INFO) 内部的子级别 / 按模块级别,用于控制 LOG(INFO) 数据流。

另请参阅 --enable-logging、--log-level、--v 和 --vmodule。

--no-proxy-server

不使用代理服务器,并始终建立直接连接。将覆盖传入的任何其他代理服务器标志。

--no-sandbox

禁用 Chromium 沙盒。 强制渲染进程和 Chromium 辅助进程在无沙盒状态下运行。 仅应将其用于测试。

--no-stdio-init

在 Node 初始化期间禁用 stdio 初始化。 用于避免在 Windows 平台上禁用 nul 设备时 Node 初始化崩溃。

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

使用指定的代理服务器,该设置将覆盖系统设置。此开关仅影响使用 HTTP 协议的请求,包括 HTTPS 和 WebSocket 请求。值得注意的是,并非所有代理服务器都支持 HTTPS 和 WebSocket 请求。根据 Chromium 问题,代理 URL 不支持用户名和密码身份验证。

--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 portal 实现所需的最低版本设置为 version,以便在 Linux 上使用 portal 后端处理文件对话框。当所需版本不可用时,文件对话框将根据桌面环境回退到使用 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 DevTools 和 IDE 等工具调试和分析 Electron 实例。这些工具通过 TCP 端口连接到 Electron 实例,并使用 Chrome DevTools Protocol 进行通信。

有关更多详细信息,请参阅 调试主进程 指南。

别名为 --debug[=[host:]port。

--inspect-publish-uid=stderr,http

指定检查器 WebSocket URL 的公开方式。

默认情况下,检查器 WebSocket URL 可在 stderr 以及 http://host:port/json/list 上的 /json/list 端点下访问。

--experimental-network-inspection

启用对 DevTools 网络检查器事件的支持,以便查看 Node.js http 和 https 模块发出的请求。

--experimental-inspector-network-resource

启用使用 Node.js 检查器时通过网络解析 source maps 的支持。

启用后,DevTools 可以通过 Node.js 检查器获取主进程和 utility 进程脚本的远程 source maps。

注意: 启用后,Node.js 检查器将向 source maps 中指定的 URL 发出网络请求。在进程可访问内部网络的环境中,请留意此行为。

--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.setDefaultResultOrder() 的优先级高于 --dns-result-order。

--diagnostic-dir=directory

设置所有 Node.js 诊断输出文件写入的目录。默认值为当前工作目录。

影响 v8.setHeapSnapshotNearHeapLimit 的默认输出目录。

--no-experimental-global-navigator

禁用 Node.js 在全局作用域中暴露 Navigator API。

--experimental-transform-types

启用将 TypeScript 专有语法转换为 JavaScript 代码。

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 版本与你用于交叉参考开关的浏览器版本相匹配。

与 Electron 应用相关的 Chromium 特性

  • AlwaysLogLOAFURL:为 long-animation-frame PerformanceObserver 事件启用脚本归因,适用于非 http(s)、非 data、非 blob URL(例如 file: 或自定义 协议 URL)。
  • SpareRendererForSitePerProcess:始终保持一个备用渲染进程运行,这样新窗口或需要新进程的导航 就不必等待进程启动。Electron 在创建默认会话时,会为第一个使用它的沙箱窗口启动这样一个进程;如果应用经常打开窗口, 且空闲渲染进程的内存占用可以接受,请启用此功能。只有 webPreferences 已启用沙箱,并且未设置 additionalArguments、 enableBlinkFeatures、disableBlinkFeatures、experimentalFeatures、offscreen 或(macOS) scrollBounce 的窗口才能使用它。

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 el/electron