本节我们来看一下 Chrome 浏览器和 Electron 中支持的命令行开关。我们可以将这些命令行开发在 app 模块的 ready 事件发出之前使用 app.commandLine.appendSwitch 来添加它们到应用的 main 脚本中。

示例:

例如添加一个 remote-debugging-port 到应用的 main 脚本:

const app = require('electron').app;
// 添加命令行开关到脚本
app.commandLine.appendSwitch('remote-debugging-port', '8315');

app.on('ready', function() {
  // ...
});

命令行开关

下面我们是一些 Electron 支持的常用的命令行开关。

--auth-server-whitelist=url

启用了集成身份验证的以逗号分隔的服务器列表。

例如:

--auth-server-whitelist='*example.com, *9xkd.com, *jswui'

上述代码表示任何以 example.com9xkd.comjswui 结尾的 url, 都需要考虑集成验证。如果没有 * 前缀,url 必须完全匹配。

--enable-api-filtering-logging

为以下 API 启用调用方堆栈日志记录(筛选事件):

  • desktopCapturer.getSources() / desktop-capturer-get-sources
  • remote.require() / remote-require
  • remote.getGlobal() / remote-get-builtin
  • remote.getBuiltin() / remote-get-global
  • remote.getCurrentWindow() / remote-get-current-window
  • remote.getCurrentWebContents() / remote-get-current-web-contents
--client-certificate=path

此命令行开关用于设置客户端的证书文件 path

--ignore-connections-limit=domains

此命令行开关可以忽略用逗号 , 分隔的 domains 列表的连接限制。

--disable-http-cache

用于禁止请求 HTTP 时使用磁盘缓存。

--remote-debugging-port=port

用于在指定的端口通过 HTTP 开启远程调试。

--js-flags=flags

用于指定引擎过渡到 JS 引擎。

在启动 Electron 时,如果我们想在主进程中激活 flags ,它将被转换。

$ electron --js-flags="--harmony_proxies --harmony_collections" your-app
--proxy-server=address:port

使用一个特定的代理服务器,它将比系统设置的优先级更高,这个开关只有在使用 HTTP 协议时有效,它包含 HTTPSWebSocket 请求。值得注意的是,不是所有的代理服务器都支持 HTTPSWebSocket 请求。

--proxy-bypass-list=hosts

指示 Electron 绕过给定的以分号 : 分隔的主机列表的代理服务器。此开关只有与 --proxy server 一起使用时才有效。

例如:

app.commandLine.appendSwitch('proxy-bypass-list', '<local>;*.google.com;*foo.com;1.2.3.4:5678')

上述代码中,除了本地地址 (localhost,127.0.0.1 etc), google.com 子域名,以 foo.com 结尾的主机地址 hosts,以及所有在 1.2.3.4:5678 上的地址以外,将会为所有的 hosts 主机使用代理服务器。

--proxy-pac-url=url

此开关用于在指定的 url 上使用 PAC 脚本。

--no-proxy-server

不使用代理服务并且总是使用直接连接,忽略所有的合理代理标志。

--host-rules=rules

一个逗号分隔的 rule 列表来控制主机名如何映射。

例如:

  • MAP * 127.0.0.1 强制所有主机名映射到 127.0.0.1
  • MAP *.9xkd.com proxy 强制所有 9xkd.com 子域 使用 "proxy"。
  • MAP test.com [::1]:77 强制 "test.com" 使用 IPv6 回环地址,也强制使用端口 77
  • MAP * jswui, EXCLUDE www.9xkd.com 重新全部映射到 "jswui",除了"www.9xkd.com"。

这些映射适用于终端网络请求(TCP 连接和主机解析以直接连接的方式,和 CONNECT 以代理连接,还有终端 host 使用 SOCKS 代理连接)。

--host-resolver-rules=rules

此开关类似 --host-rules ,但是 rules 只适合主机解析。

--ignore-certificate-errors

此开关用于忽略与证书相关的错误。

--ppapi-flash-path=path

此开关用于设置 Pepper Flash 插件的路径 path

--ppapi-flash-version=version

此开关用于设置 Pepper Flash 插件的 version 属性(即版本号)。

--log-net-log=path

此开关用于启用需要保存的网络日志事件并将其写入path路径下。

--disable-renderer-backgrounding

此开关用于防止 Chromium 降低隐藏的渲染进程优先级。这个标志对所有渲染进程全局有效,如果我们只想禁用一个窗口的节流保护,可以采取 playing silent audio

--enable-logging

此开关用于打印 Chromium 信息输出到控制台。

如果在用户应用加载完成之前解析 app.commandLine.appendSwitch ,这个开关将实效,但是你可以设置 ELECTRON_ENABLE_LOGGING 环境变量来达到相同的效果。

--v=log_level

此开关用于设置默认最大活跃 V-logging 标准,默认为 0。通常 V-logging 标准值为正值。

注意这个开关只有在 --enable-logging 开启时有效。

--vmodule=pattern

给定每个模块最大的 V-logging 等级,覆盖 --v 设定的值。例如 my_module=2,foo*=3 将改变所有my_module.*foo*.* 源文件的代码的日志等级。

任何包含正斜杠或反斜杠的模式都将针对 整个路径名进行测试,而不仅仅是模块。例如 */foo/bar/*=2 会改变foo/bar目录下源文件的所有代码的日志等级。

这个开关只有在 --enable-logging 也被传递时才起效:

--enable-logging

知否
221 声望177 粉丝

Skrike while the iron is hot.