:memo: Update as upstream
authorPlusb Preco <plusb21@gmail.com>
Fri, 8 Jan 2016 23:13:25 +0000 (08:13 +0900)
committerCheng Zhao <zcbenz@gmail.com>
Mon, 11 Jan 2016 04:04:48 +0000 (12:04 +0800)
[ci skip]

docs-translations/ko-KR/README.md
docs-translations/ko-KR/api/browser-window.md
docs-translations/ko-KR/api/chrome-command-line-switches.md
docs-translations/ko-KR/api/global-shortcut.md
docs-translations/ko-KR/api/screen.md
docs-translations/ko-KR/faq/electron-faq.md [new file with mode: 0644]
docs-translations/ko-KR/tutorial/application-distribution.md
docs-translations/ko-KR/tutorial/debugging-main-process.md

index 473f521..6f4a1c5 100644 (file)
@@ -6,11 +6,18 @@ URL에 포함되어 있습니다. 만약 그렇지 않다면, 아마 현재 보
 수 있습니다. 또한 GitHub 인터페이스의 "Switch branches/tags" 드롭다운 메뉴에서도
 사용 중인 Electron 버전으로 변경할 수 있습니다.
 
-**역주:** 한국어 번역 문서는 atom.io에 반영이 되어있지 않습니다. 따라서 번역 문서는
-GitHub 프로젝트내에서만 볼 수 있 `master` 브랜치의 문서는 현재 개발중인 프로젝트의
+**역주:** 한국어 번역 문서는 `atom.io`에 반영되어 있지 않습니다. 따라서 번역 문서는
+GitHub 프로젝트내에서만 볼 수 있으며 `master` 브랜치의 문서는 현재 개발중인 프로젝트의
 문서입니다. 한국어 번역 문서는 현재 `upstream` 원본 문서의 변경에 따라 최대한 문서의
 버전을 맞추려고 노력하고 있지만 가끔 누락된 번역이 존재할 수 있습니다.
 
+## FAQ
+
+Electron에 대해 자주 묻는 질문이 있습니다. 이슈를 생성하기 전에 다음 문서를 먼저
+확인해 보세요:
+
+* [Electron FAQ](faq/electron-faq.md)
+
 ## 개발 가이드
 
 * [지원하는 플랫폼](tutorial/supported-platforms.md)
index a278a50..9086f83 100644 (file)
@@ -77,73 +77,78 @@ win.show();
   몇몇 GTK+3 데스크톱 환경에서만 작동합니다. 기본값은 `false`입니다.
 * `transparent` Boolean - 윈도우 창을 [투명화](frameless-window.md)합니다. 기본값은
   `false`입니다.
-* `type` String - 특정 플랫폼에만 적용되는 윈도우 창의 종류를 지정합니다. 기본적으로
-  이 속성이 `undefined`일 경우 표준 윈도우가 사용됩니다. 사용할 수 있는 창의 종류는
-  다음과 같습니다:
-  * Linux의 경우: `desktop`, `dock`, `toolbar`, `splash`, `notification` 종류를
-    사용할 수 있습니다.
-  * OS X의 경우: `desktop`, `textured` 종류를 사용할 수 있습니다. `textured` 종류는
-    창을 그라디언트 형태로 표현합니다 (`NSTexturedBackgroundWindowMask`) `desktop`
-    종류는 데스크탑 배경 레벨에 윈도우를 배치합니다 (`kCGDesktopWindowLevel - 1`).
-    참고로 이렇게 만들어진 윈도우는 포커스, 키보드, 마우스 이벤트를 받을 수 없습니다.
-    하지만 편법으로 `globalShortcut`을 통해 키 입력을 받을 수 있습니다.
+* `type` String - 특정 플랫폼에만 적용되는 윈도우 창의 종류를 지정합니다. 기본값은
+  일반 윈도우 입니다. 사용할 수 있는 창의 종류는 아래를 참고하세요.
 * `standardWindow` Boolean - OS X의 표준 윈도우를 텍스쳐 윈도우 대신 사용합니다.
   기본 값은 `true`입니다.
-* `titleBarStyle` String, OS X - 윈도우 타이틀 바 스타일을 지정합니다. 이 속성은
-  OS X 10.10 Yosemite 이후 버전만 지원합니다. 다음 3가지 종류의 값을 사용할 수
-  있습니다:
-  * `default` 또는 미지정: 표준 Mac 회색 불투명 스타일을 사용합니다.
-  * `hidden`: 타이틀 바를 숨기고 컨텐츠 전체를 윈도우 크기에 맞춥니다.
-    타이틀 바는 없어지지만 표준 창 컨트롤 ("신호등 버튼")은 왼쪽 상단에 유지됩니다.
-  * `hidden-inset`: `hidden` 타이틀 바 속성과 함께 신호등 버튼이 윈도우 모서리로부터
-    약간 더 안쪽으로 들어가도록합니다.
+* `titleBarStyle` String, OS X - 윈도우 타이틀 바 스타일을 지정합니다. 자세한 사항은
+  아래를 참고하세요.
 * `webPreferences` Object - 웹 페이지 기능을 설정합니다. 사용할 수 있는 속성은
-  다음과 같습니다:
-  * `nodeIntegration` Boolean - node(node.js) 통합 여부. 기본값은 `true`입니다.
-  * `preload` String - 스크립트를 지정하면 페이지 내의 다른 스크립트가 작동하기 전에
-    로드됩니다. 여기서 지정한 스크립트는 node 통합 활성화 여부에 상관없이 언제나 모든
-    node API에 접근할 수 있습니다. 이 속성의 스크립트 경로는 절대 경로로 지정해야
-    합니다. node 통합이 비활성화되어있을 경우, preload 스크립트는 node의 global
-    심볼들을 다시 global 스코프로 다시 포함 시킬 수 있습니다.
-    [여기](process.md#event-loaded)의 예제를 참고하세요.
-  * `partition` String - 페이지에서 사용할 세션을 지정합니다. 만약 `partition`이
-    `persist:`로 시작하면 페이지는 지속성 세션을 사용하며 다른 모든 앱 내의
-    페이지에서 같은 `partition`을 사용할 수 있습니다. 만약 `persist:` 접두어로
-    시작하지 않으면 페이지는 인-메모리 세션을 사용합니다. 여러 페이지에서 같은
-    `partition`을 지정하면 같은 세션을 공유할 수 있습니다. `partition`을 지정하지
-    않으면 어플리케이션의 기본 세션이 사용됩니다.
-  * `zoomFactor` Number - 페이지의 기본 줌 값을 지정합니다. 예를 들어 `300%`를
-    표현하려면 `3.0`으로 지정합니다. 기본값은 `1.0`입니다.
-  * `javascript` Boolean - 자바스크립트를 활성화합니다. 기본값은 `false`입니다.
-  * `webSecurity` Boolean - `false`로 지정하면 same-origin 정책을 비활성화합니다.
-    (이 속성은 보통 사람들에 의해 웹 사이트를 테스트할 때 사용합니다) 그리고
-    `allowDisplayingInsecureContent`와 `allowRunningInsecureContent` 두 속성을
-    사용자가 `true`로 지정되지 않은 경우 `true`로 지정합니다. 기본값은
-    `true`입니다.
-  * `allowDisplayingInsecureContent` Boolean - https 페이지에서 http URL에서
-    로드한 이미지 같은 리소스를 표시할 수 있도록 허용합니다. 기본값은 `false`입니다.
-  * `allowRunningInsecureContent` Boolean - https 페이지에서 http URL에서 로드한
-    JavaScript와 CSS 또는 플러그인을 실행시킬 수 있도록 허용합니다. 기본값은
-    `false`입니다.
-  * `images` Boolean - 이미지 지원을 활성화합니다. 기본값은 `true`입니다.
-  * `textAreasAreResizable` Boolean - HTML TextArea 요소의 크기를 재조정을
-    허용합니다. 기본값은 `true`입니다.
-  * `webgl` Boolean - WebGL 지원을 활성화합니다. 기본값은 `true`입니다.
-  * `webaudio` Boolean - WebAudio 지원을 활성화합니다. 기본값은 `true`입니다.
-  * `plugins` Boolean - 플러그인 활성화 여부를 지정합니다. 기본값은 `false`입니다.
-  * `experimentalFeatures` Boolean - Chrome의 실험적인 기능을 활성화합니다.
-    기본값은 `false`입니다.
-  * `experimentalCanvasFeatures` Boolean - Chrome의 실험적인 캔버스(canvas) 기능을
-    활성화합니다. 기본값은 `false`입니다.
-  * `overlayScrollbars` Boolean - 오버레이 스크롤바를 활성화합니다. 기본값은
-    `false`입니다.
-  * `sharedWorker` Boolean - SharedWorker 기능을 활성화합니다. 기본값은
-    `false`입니다.
-  * `directWrite` Boolean - Windows에서 폰트 랜더링을 위해 DirectWrite를
-    사용하는지를 지정합니다. 기본값은 `true`입니다.
-  * `pageVisibility` Boolean - 현재 윈도우의 가시성을 반영하는 대신 페이지가
-    visible 또는 hidden 중 지정된 상태를 계속 유지하도록 합니다. 이 속성을 `true`로
-    지정하면 DOM 타이머의 스로틀링을 방지할 수 있습니다. 기본값은 `false`입니다.
+  아래를 참고하세요.
+
+`type` 속성에서 사용할 수 있는 값과 동작은 다음과 같으며, 플랫폼에 따라 다릅니다:
+
+* Linux의 경우, `desktop`, `dock`, `toolbar`, `splash`, `notification` 종류를
+  사용할 수 있습니다.
+* OS X의 경우, `desktop`, `textured` 종류를 사용할 수 있습니다.
+  * `textured`는 창에 메탈 그라디언트 외관(`NSTexturedBackgroundWindowMask`)을
+    설정합니다.
+  * `desktop`은 데스크탑 배경 레벨(`kCGDesktopWindowLevel - 1`)에 윈도우를
+    배치합니다. 참고로 이렇게 만들어진 윈도우는 포커스, 키보드, 마우스 이벤트를 받을
+    수 없습니다. 하지만 편법으로 `globalShortcut`을 통해 키 입력을 받을 수 있습니다.
+
+`titleBarStyle` 속성은 OS X 10.10 Yosemite 이후 버전만 지원하며, 다음 3가지 종류의
+값을 사용할 수 있습니다:
+
+* `default` 또는 미지정: 표준 Mac 회색 불투명 스타일을 사용합니다.
+* `hidden`: 타이틀 바를 숨기고 컨텐츠 전체를 윈도우 크기에 맞춥니다.
+  타이틀 바는 없어지지만 표준 창 컨트롤 ("신호등 버튼")은 왼쪽 상단에 유지됩니다.
+* `hidden-inset`: `hidden` 타이틀 바 속성과 함께 신호등 버튼이 윈도우 모서리로부터
+  약간 더 안쪽으로 들어가도록합니다.
+
+`webPreferences` 속성은 다음과 같은 속성을 가질 수 있습니다:
+
+* `nodeIntegration` Boolean - node(node.js) 통합 여부. 기본값은 `true`입니다.
+* `preload` String - 스크립트를 지정하면 페이지 내의 다른 스크립트가 작동하기 전에
+  로드됩니다. 여기서 지정한 스크립트는 node 통합 활성화 여부에 상관없이 언제나 모든
+  node API에 접근할 수 있습니다. 이 속성의 스크립트 경로는 절대 경로로 지정해야
+  합니다. node 통합이 비활성화되어있을 경우, preload 스크립트는 node의 global
+  심볼들을 다시 global 스코프로 다시 포함 시킬 수 있습니다.
+  [여기](process.md#event-loaded)의 예제를 참고하세요.
+* `partition` String - 페이지에서 사용할 세션을 지정합니다. 만약 `partition`이
+  `persist:`로 시작하면 페이지는 지속성 세션을 사용하며 다른 모든 앱 내의
+  페이지에서 같은 `partition`을 사용할 수 있습니다. 만약 `persist:` 접두어로
+  시작하지 않으면 페이지는 인-메모리 세션을 사용합니다. 여러 페이지에서 같은
+  `partition`을 지정하면 같은 세션을 공유할 수 있습니다. `partition`을 지정하지
+  않으면 어플리케이션의 기본 세션이 사용됩니다.
+* `zoomFactor` Number - 페이지의 기본 줌 값을 지정합니다. 예를 들어 `300%`를
+  표현하려면 `3.0`으로 지정합니다. 기본값은 `1.0`입니다.
+* `javascript` Boolean - 자바스크립트를 활성화합니다. 기본값은 `false`입니다.
+* `webSecurity` Boolean - `false`로 지정하면 same-origin 정책을 비활성화합니다.
+  (이 속성은 보통 사람들에 의해 웹 사이트를 테스트할 때 사용합니다) 그리고
+  `allowDisplayingInsecureContent`와 `allowRunningInsecureContent` 두 속성을
+  사용자가 `true`로 지정되지 않은 경우 `true`로 지정합니다. 기본값은
+  `true`입니다.
+* `allowDisplayingInsecureContent` Boolean - https 페이지에서 http URL에서
+  로드한 이미지 같은 리소스를 표시할 수 있도록 허용합니다. 기본값은 `false`입니다.
+* `allowRunningInsecureContent` Boolean - https 페이지에서 http URL에서 로드한
+  JavaScript와 CSS 또는 플러그인을 실행시킬 수 있도록 허용합니다. 기본값은
+  `false`입니다.
+* `images` Boolean - 이미지 지원을 활성화합니다. 기본값은 `true`입니다.
+* `textAreasAreResizable` Boolean - HTML TextArea 요소의 크기를 재조정을
+  허용합니다. 기본값은 `true`입니다.
+* `webgl` Boolean - WebGL 지원을 활성화합니다. 기본값은 `true`입니다.
+* `webaudio` Boolean - WebAudio 지원을 활성화합니다. 기본값은 `true`입니다.
+* `plugins` Boolean - 플러그인 활성화 여부를 지정합니다. 기본값은 `false`입니다.
+* `experimentalFeatures` Boolean - Chrome의 실험적인 기능을 활성화합니다.
+  기본값은 `false`입니다.
+* `experimentalCanvasFeatures` Boolean - Chrome의 실험적인 캔버스(canvas) 기능을
+  활성화합니다. 기본값은 `false`입니다.
+* `directWrite` Boolean - Windows에서 폰트 랜더링을 위해 DirectWrite를
+  사용하는지를 지정합니다. 기본값은 `true`입니다.
+* `blinkFeatures` String - `CSSVariables,KeyboardEventKey`같은 `,`로 구분된
+  기능 문자열들의 리스트입니다. 지원하는 전체 기능 문자열들은
+  [setFeatureEnabledFromString][blink-feature-string] 함수에서 찾을 수 있습니다.
 
 ## Events
 
@@ -747,3 +752,5 @@ Linux 플랫폼에선 Unity 데스크톱 환경만 지원합니다. 그리고 
 * `ignore` Boolean
 
 윈도우에서 일어나는 모든 마우스 이벤트를 무시합니다.
+
+[blink-feature-string]: https://code.google.com/p/chromium/codesearch#chromium/src/out/Debug/gen/blink/platform/RuntimeEnabledFeatures.cpp&sq=package:chromium&type=cs&l=527
index f13f379..defa1e0 100644 (file)
@@ -119,6 +119,14 @@ TLS fallback에서 사용할 SSL/TLS 최소 버전을 지정합니다. ("tls1",
 
 SSL 암호화를 비활성화할 대상 목록을 지정합니다. (`,`로 구분)
 
+## --disable-renderer-backgrounding
+
+Chromium이 랜더러 프로세스의 보이지 않는 페이지의 우선순위를 낮추는 것을 방지합니다.
+
+이 플래그는 전역적이며 모든 랜더러 프로세스에 적용됩니다. 만약 하나의 윈도우창에만
+스로틀링을 비활성화하고 싶다면 [조용한 오디오를 재생하는][play-silent-audio] 핵을 사용할
+수 있습니다.
+
 ## --enable-logging
 
 Chromium의 로그를 콘솔에 출력합니다.
@@ -149,3 +157,4 @@ Chromium의 로그를 콘솔에 출력합니다.
 [app]: app.md
 [append-switch]: app.md#appcommandlineappendswitchswitch-value
 [ready]: app.md#event-ready
+[play-silent-audio]: https://github.com/atom/atom/pull/9485/files
index 9617d46..658f723 100644 (file)
@@ -1,6 +1,6 @@
-# global-shortcut
+# globalSortcut
 
-`global-shortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을
+`globalShortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을
 제공합니다. 이 모듈을 사용하여 사용자가 다양한 작업을 편하게 할 수 있도록 단축키를
 정의 할 수 있습니다.
 
@@ -38,26 +38,29 @@ app.on('will-quit', function() {
 
 ## Methods
 
-`global-shortcut` 모듈은 다음과 같은 메서드를 가지고 있습니다:
+`globalShortcut` 모듈은 다음과 같은 메서드를 가지고 있습니다:
 
 ### `globalShortcut.register(accelerator, callback)`
 
 * `accelerator` [Accelerator](accelerator.md)
 * `callback` Function
 
-`accelerator`로 표현된 전역 단축키를 등록합니다. 유저로부터 등록된 단축키가 눌렸을
-경우 `callback` 함수가 호출됩니다. `accelerator` 단축키가 등록되었을 경우
-`true`를 반환합니다. 그 외엔 `false`를 반환합니다. 예를 들어 지정한
-`accelerator`가 이미 다른 호출자 또는 네이티브 어플리케이션에서 등록된 상태를
-생각할 수 있습니다.
+`accelerator`의 전역 단축키를 등록합니다. 유저로부터 등록된 단축키가 눌렸을 경우
+`callback` 함수가 호출됩니다.
 
+accelerator가 이미 다른 어플리케이션에서 사용 중일 경우, 이 작업은 조용히 실패합니다.
+이러한 동작은 어플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기
+위해 운영체제에 의해 예정된 동작입니다.
 
 ### `globalShortcut.isRegistered(accelerator)`
 
 * `accelerator` [Accelerator](accelerator.md)
 
-지정된 `accelerator` 단축키가 등록되었는지 여부를 확인합니다. 반환값은 boolean값
-입니다.
+지정된 `accelerator` 단축키가 등록되었는지 여부를 확인합니다.
+
+Accelerator가 이미 다른 어플리케이션에서 사용 중일 경우, 여전히 `false`를 반환합니다.
+이러한 동작은 어플리케이션이 전역 키보드 단축키를 가지고 충돌이 일어나지 않도록 하기
+위해 운영체제에 의해 예정된 동작입니다.
 
 ### `globalShortcut.unregister(accelerator)`
 
index dfd85fb..6cc6535 100644 (file)
@@ -54,6 +54,24 @@ app.on('ready', function() {
 });
 ```
 
+## `Display` 객체
+
+`Display` 객체는 시스템에 연결된 물리적인 디스플레이를 표현합니다. 헤드레스(headless)
+시스템에선 가짜 `Display` 객체가 보여지거나 리모트(remote), 가상 디스플레이에
+해당하게 됩니다.
+
+* `display` object
+  * `id` Integer - 디스플레이에 관련된 유일 식별자.
+  * `rotation` Integer - 값은 0, 1, 2, 3이 될 수 있고, 각 값은 시계 방향을 기준으로
+    0, 90, 180, 270도의 화면 회전 상태로 표현됩니다.
+  * `scaleFactor` Number - 기기의 픽셀 스케일 크기.
+  * `touchSupport` String - 터치 스크린의 여부, `available`, `unavailable`,
+    `unknown` 값으로 반환됩니다.
+  * `bounds` Object
+  * `size` Object
+  * `workArea` Object
+  * `workAreaSize` Object
+
 ## Events
 
 `screen` 모듈은 다음과 같은 이벤트를 가지고 있습니다:
diff --git a/docs-translations/ko-KR/faq/electron-faq.md b/docs-translations/ko-KR/faq/electron-faq.md
new file mode 100644 (file)
index 0000000..54ecf64
--- /dev/null
@@ -0,0 +1,81 @@
+# Electron FAQ
+
+## 언제 Electron이 최신 버전의 Chrome으로 업그레이드 되나요?
+
+Electron의 Chrome 버전은 보통 새로운 Chrome 안정 버전이 릴리즈 된 이후 1주 내지 2주
+내로 업데이트됩니다.
+
+또한 우리는 크롬의 안정된 채널만을 이용합니다, 만약 중요한 수정이 베타 또는 개발 채널인
+경우, 우리는 해당 버전 대신 이전 버전을 다시 사용합니다.
+
+## Electron은 언제 최신 버전의 Node.js로 업그레이드 하나요?
+
+새로운 버전의 Node.js가 릴리즈 되면, 우리는 보통 Electron을 업그레이드 하기 전에 한
+달 정도 대기합니다. 이렇게 하면 새로운 Node.js 버전을 업데이트 함으로써 발생하는
+버그들을 피할 수 있습니다. 이러한 상황은 자주 발생합니다.
+
+Node.js의 새로운 기능은 보통 V8 업그레이드에서 가져옵니다. Electron은 Chrome
+브라우저에 탑재된 V8을 사용하고 있습니다. 눈부신 새로운 Node.js 버전의 자바스크립트
+기능은 보통 이미 Electron에 있습니다.
+
+## 제작한 어플리케이션의 윈도우/트레이가 몇 분 후에나 나타납니다.
+
+이러한 문제가 발생하는 이유는 보통 윈도우/트레이를 담은 변수에 가비지 컬렉션이 작동해서
+그럴 가능성이 높습니다.
+
+이러한 문제를 맞닥뜨린 경우 다음 문서를 읽어보는 것이 좋습니다:
+
+* [메모리 관리][memory-management]
+* [변수 스코프][variable-scope]
+
+만약 빠르게 고치고 싶다면, 다음과 같이 변수를 전역 변수로 만드는 방법이 있습니다:
+
+```javascript
+app.on('ready', function() {
+  var tray = new Tray('/path/to/icon.png');
+})
+```
+
+를 이렇게:
+
+```javascript
+var tray = null;
+app.on('ready', function() {
+  tray = new Tray('/path/to/icon.png');
+})
+```
+
+## Electron에서 jQuery/RequireJS/Meteor/AngularJS를 사용할 수 없습니다.
+
+Node.js가 Electron에 합쳐졌기 때문에, DOM에 `module`, `exports`, `require` 같은
+몇 가지 심볼들이 추가됬습니다. 따라서 같은 이름의 심볼을 사용하는 몇몇 라이브러리들과
+충돌이 발생할 수 있습니다.
+
+이러한 문제를 해결하려면, Electron에서 node 포함을 비활성화시켜야 합니다:
+
+```javascript
+// 메인 프로세스에서.
+var mainWindow = new BrowserWindow({
+  webPreferences: {
+    nodeIntegration: false
+  }
+});
+```
+
+하지만 Node.js의 기능과 Electron API를 유지하고 싶다면 페이지에 다른 라이브러리를
+추가하기 전에 심볼들의 이름을 변경해야 합니다:
+
+```html
+<head>
+<script>
+window.nodeRequire = require;
+delete window.require;
+delete window.exports;
+delete window.module;
+</script>
+<script type="text/javascript" src="jquery.js"></script>
+</head>
+```
+
+[memory-management]: https://developer.mozilla.org/ko/docs/Web/JavaScript/Memory_Management
+[variable-scope]: https://msdn.microsoft.com/library/bzt2dkta(v=vs.94).aspx
index 73839f2..34eb8ce 100644 (file)
@@ -106,14 +106,6 @@ MyApp.app/Contents
 아이콘은 [.desktop](https://developer.gnome.org/integration-guide/stable/desktop-files.html.en)
 파일을 사용하여 지정할 수 있습니다.
 
-### 역주-자동화
-
-어플리케이션 배포시 Electron의 리소스를 일일이 수정하는 것은 매우 반복적이고 복잡합니다.
-하지만 이 작업을 자동화 시킬 수 있는 몇가지 방법이 있습니다:
-
-* [electron-builder](https://github.com/loopline-systems/electron-builder)
-* [electron-packager](https://github.com/maxogden/electron-packager)
-
 ## Electron 소스코드를 다시 빌드하여 리소스 수정하기
 
 또한 Electron 소스코드를 다시 빌드할 때 어플리케이션 이름을 변경할 수 있습니다.
@@ -146,3 +138,11 @@ Electron의 소스코드를 수정하고 다시 빌드하는 작업은 상당히
 
 이 툴을 사용하면 자동으로 `.gyp`파일을 수정하고 다시 빌드합니다. 그리고 어플리케이션의
 네이티브 Node 모듈 또한 새로운 실행파일 이름으로 일치시킵니다.
+
+## 패키징 툴
+
+어플리케이션을 일일이 수동으로 패키지로 만드는 대신, 서드 파티 패키징 툴을 사용하며
+이러한 작업을 자동화 시킬 수 있습니다:
+
+* [electron-packager](https://github.com/maxogden/electron-packager)
+* [electron-builder](https://github.com/loopline-systems/electron-builder)
index ee7e843..bea8ce6 100644 (file)
@@ -23,13 +23,30 @@ __참고:__ Electron은 현재 node-inspector 유틸리티와 호환성 문제
 node-inspector 콘솔 내에서 메인 프로세스의 `process` 객체를 탐색할 경우 크래시가
 발생할 수 있습니다.
 
-### 1. [node-inspector][node-inspector] 서버 시작
+### 1. [node-gyp 필수 도구][node-gyp-required-tools]를 설치했는지 확인
+
+### 2. [node-inspector][node-inspector] 설치
+
+```bash
+$ npm install node-inspector
+```
+
+### 3. 패치된 버전의 `node-pre-gyp` 설치
+
+```bash
+$ npm install git+https://git@github.com/enlight/node-pre-gyp.git#detect-electron-runtime-in-find
+```
+
+### 4. Electron용 `node-inspector` `v8` 모듈을 재 컴파일 (target을 사용하는 Electron의 버전에 맞춰 변경)
 
 ```bash
-$ node-inspector
+$ node_modules/.bin/node-pre-gyp --target=0.36.2 --runtime=electron --fallback-to-build --directory node_modules/v8-debug/ --dist-url=https://atom.io/download/atom-shell reinstall
+$ node_modules/.bin/node-pre-gyp --target=0.36.2 --runtime=electron --fallback-to-build --directory node_modules/v8-profiler/ --dist-url=https://atom.io/download/atom-shell reinstall
 ```
 
-### 2. Electron용 디버그 모드 활성화
+또한 [네이티브 모듈을 사용하는 방법](how-to-install-native-modules) 문서도 참고해보세요.
+
+### 5. Electron 디버그 모드 활성화
 
 다음과 같이 debung 플래그로 Electron을 실행할 수 있습니다:
 
@@ -43,9 +60,18 @@ $ electron --debug=5858 your/app
 $ electron --debug-brk=5858 your/app
 ```
 
-### 3. 디버그 UI 로드
+### 5. Electron을 사용하는 [node-inspector][node-inspector] 시작
+
+```bash
+$ ELECTRON_RUN_AS_NODE=true path/to/electron.exe node_modules/node-inspector/bin/inspector.js
+```
+
+### 6. 디버거 UI 로드
 
 Chrome 브라우저에서 http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 주소에
-접속합니다. (기본포트 또는 지정한 포트로 접속)
+접속합니다. (기본 포트 또는 지정한 포트로 접속) 엔트리의 라인이 debug-brk로 시작하는
+경우 일시정지 버튼을 클릭해야 할 수도 있습니다.
 
 [node-inspector]: https://github.com/node-inspector/node-inspector
+[node-gyp-required-tools]: https://github.com/nodejs/node-gyp#installation
+[how-to-install-native-modules]: using-native-node-modules.md#네이티브-모듈을-설치하는-방법