지원되는 커맨드라인 스위치
Electron에서 지원하는 커맨드라인 스위치 목록
app.commandLine.appendSwitch를 사용해 앱의 메인 스크립트에서 app 모듈의 ready 이벤트가 발생하기 전에 스위치를 추가할 수 있다:
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를 비활성화한다. 다른 플랫폼에서는 아무런 영향을 미치지 않는다.
HTTP 요청에 대한 디스크 캐시를 비활성화한다.
HTTP/2와 SPDY/3.1 프로토콜을 비활성화한다.
--disable-renderer-backgrounding
크로미움(Chromium)이 보이지 않는 페이지의 렌더러 프로세스 우선순위를 낮추지 않도록 방지한다.
이 플래그는 모든 렌더러 프로세스에 전역적으로 적용된다. 특정 윈도우에서만 스로틀링(throttling)을 비활성화하려면 무음 오디오 재생 방법을 활용할 수 있다.
--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
파일에 저장된다.
참고: 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
"www.google.com"을 제외한 모든 것을 "baz"로 다시 매핑한다.
이 매핑은 네트워크 요청의 엔드포인트 호스트에 적용된다(직접 연결 시 TCP 연결 및 호스트 리졸버, HTTP 프록시 연결 시 CONNECT
, SOCKS
프록시 연결 시 엔드포인트 호스트).
--host-resolver-rules=규칙
--host-rules
와 유사하지만, 이 규칙
은 호스트 리졸버에만 적용된다.
--ignore-certificate-errors
인증서 관련 오류를 무시한다.
--ignore-connections-limit=domains
domains
목록에 있는 도메인에 대해 연결 제한을 무시한다. 도메인은 ,
로 구분한다.
--js-flags=flags
V8 엔진에 전달할 플래그를 지정한다. 메인 프로세스에서 이 플래그를 활성화하려면, 애플리케이션 시작 시 이 스위치를 전달해야 한다.
$ electron --js-flags="--harmony_proxies --harmony_collections" your-app
사용 가능한 플래그 목록을 확인하려면 터미널에서 node --v8-options
또는 electron --js-flags="--help"
를 실행한다. 이 플래그들은 초기 단계의 자바스크립트 기능을 활성화하거나, 가비지 컬렉션을 로깅하고 조작하는 등의 다양한 목적으로 사용할 수 있다.
예를 들어, V8의 최적화 및 비최적화 과정을 추적하려면 다음과 같이 실행한다:
$ electron --js-flags="--trace-opt --trace-deopt" your-app
--lang
사용자 정의 로케일을 설정한다.
--log-file=경로
--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 Logging 소스를 참고한다. 간단히 말해, VLOG()
는 LOG(INFO)
내부의 하위 수준 또는 모듈별 수준으로 생각할 수 있다. 이를 통해 LOG(INFO)
데이터의 양을 조절할 수 있다.
참고할 만한 다른 옵션으로는 --enable-logging
, --log-level
, --v
, --vmodule
이 있다.
프록시 서버를 사용하지 않고 항상 직접 연결을 한다. 이 옵션은 전달된 다른 모든 프록시 서버 관련 플래그를 무시한다.
--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
시스템 설정을 무시하고 지정된 프록시 서버를 사용한다. 이 스위치는 HTTP 프로토콜을 사용하는 요청에만 적용되며, HTTPS와 WebSocket 요청도 포함된다. 단, 모든 프록시 서버가 HTTPS와 WebSocket 요청을 지원하는 것은 아니다. 프록시 URL은 사용자 이름과 비밀번호 인증을 지원하지 않는다. 자세한 내용은 Chromium 이슈를 참고한다.
지정된 port
에서 HTTP를 통해 원격 디버깅을 활성화한다.
--v=log_level
기본 최대 활성 V-로깅 레벨을 지정한다. 기본값은 0이다. 일반적으로 양수 값을 V-로깅 레벨로 사용한다.
이 스위치는 --enable-logging
도 함께 전달될 때만 동작한다.
관련 스위치: --enable-logging
, --log-level
, --vmodule
--vmodule=패턴
이 옵션은 --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
Linux 환경에서 파일 대화 상자에 XDG 포털 백엔드를 사용하기 위해 필요한 최소 XDG 포털 구현 버전을 version
으로 설정한다. 필요한 버전을 사용할 수 없을 경우, 데스크톱 환경에 따라 GTK 또는 KDE로 대체된다. 현재 기본값은 3
이다.
Node.js 플래그
Electron은 Node.js가 지원하는 CLI 플래그 중 일부를 지원한다.
참고: ELECTRON_RUN_AS_NODE
모드에서 실행되지 않을 때 Electron에 지원되지 않는 커맨드라인 스위치를 전달하면 아무런 효과가 없다.
--inspect-brk\[=\[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 신호를 보내 인스펙터를 활성화할 때 유용하다. 기본 호스트는 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
는 인스펙터 웹 소켓 URL을 노출하는 방식을 지정한다.
기본적으로 인스펙터 웹 소켓 URL은 stderr와 http://host:port/json/list
엔드포인트에서 확인할 수 있다.
--no-deprecation
사용 중단 경고를 표시하지 않는다.
--throw-deprecation
더 이상 사용되지 않는 기능(deprecations)에 대해 오류를 발생시킨다.
--trace-deprecation
사용 중단(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
보다 높은 우선순위를 가진다.