Skip to main content

Electron 3.0.0

· 8 min read

Electron 팀은 Electron 3의 첫 번째 안정 버전을 출시하게 되어 기쁘게 생각합니다. 이제 electronjs.org에서 또는 npm install electron@latest 명령어를 통해 다운로드할 수 있습니다. 이번 버전은 다양한 업그레이드, 수정 사항, 그리고 새로운 기능으로 가득 차 있습니다. 여러분이 이 기능들을 활용해 무엇을 만들어 낼지 기대가 큽니다. 아래는 이번 릴리스에 대한 상세 정보입니다. 여러분의 피드백을 환영합니다.

릴리스 프로세스

v3.0.0 개발을 진행하면서, 우리는 점진적인 베타 릴리스에 대한 피드백 프로세스를 공식화하여 안정적인 릴리스 기준을 더 실질적으로 정의하려고 노력했다. 앱 피드백 프로그램 파트너들이 없었다면 v3.0.0은 불가능했을 것이다. 이 파트너들은 베타 주기 동안 초기 테스트와 피드백을 제공했다. Atlassian, Atom, Microsoft Teams, Oculus, OpenFin, Slack, Symphony, VS Code 및 다른 프로그램 멤버들의 노력에 감사한다. 앞으로의 베타 테스트에 참여하고 싶다면 info@electronjs.org로 메일을 보내주길 바란다.

변경 사항 / 새로운 기능

Electron의 핵심 툴체인에 대한 주요 업데이트가 이루어졌다. Chrome v66.0.3359.181, Node v10.2.0, 그리고 V8 v6.6.346.23 버전으로 업그레이드됐다.

  • [#12656] 기능 추가: app.isPackaged
  • [#12652] 기능 추가: app.whenReady()
  • [#13183] 기능 추가: process.getHeapStatistics()
  • [#12485] 기능 추가: win.moveTop()을 통해 윈도우의 z-order를 최상위로 이동
  • [#13110] 기능 추가: TextField 및 Button API
  • [#13068] 기능 추가: 동적 로깅 제어를 위한 netLog API
  • [#13539] 기능 추가: 샌드박스 렌더러에서 webview 사용 가능
  • [#14118] 기능 추가: fs.readSync가 대용량 파일에서도 작동
  • [#14031] 기능 추가: fs.realpathSync.nativefs.realpath.native를 사용할 수 있는 node fs 래퍼 추가

주요 API 변경 사항

  • [#12362] 기능: 메뉴 아이템 순서 제어 업데이트
  • [#13050] 리팩토링: 문서화된 사용 중단 API 제거
    • 자세한 내용은 문서 참고
  • [#12477] 리팩토링: did-get-response-detailsdid-get-redirect-request 이벤트 제거
  • [#12655] 기능: 드래그/드롭 시 기본적으로 네비게이션 비활성화
  • [#12993] 기능: electron npm 모듈 사용을 위해 Node v4.x 이상 필요
  • [#12008 #12140 #12503 #12514 #12584 #12596 #12637 #12660 #12696 #12716 #12750 #12787 #12858] 리팩토링: NativeWindow
  • [#11968] 리팩토링: menu.popup()
  • [#8953] 기능: ipcRenderer.sendSync 결과 전송 시 더 이상 JSON 사용하지 않음
  • [#13039] 기능: URL 뒤에 오는 커맨드라인 인수 기본적으로 무시
  • [#12004] 리팩토링: api::Windowapi::BrowserWindow로 이름 변경
  • [#12679] 기능: 시각적 줌 기능 기본적으로 비활성화
  • [#12408] 리팩토링: 앱 커맨드 media-play_pausemedia-play-pause로 이름 변경

macOS

  • [#12093] feat: 워크스페이스 알림 지원 추가
  • [#12496] feat: 트레이 더블 클릭 이벤트 무시 기능 추가 (tray.setIgnoreDoubleClickEvents(ignore))
  • [#12281] feat: macOS에서 마우스 포워딩 기능 추가
  • [#12714] feat: 화면 잠금 / 잠금 해제 이벤트 추가

Windows

  • [#12879] 기능: DIP와 스크린 좌표 간 변환 기능 추가

주의: 이 버전을 실행한 후 이전 버전의 Electron으로 전환하려면 사용자 데이터 디렉터리를 삭제해야 한다. 그렇지 않으면 이전 버전이 충돌할 수 있다. 사용자 데이터 디렉터리는 console.log(app.getPath("userData"))를 실행하거나 문서를 참조하여 확인할 수 있다.

버그 수정

  • [#13397] 수정: fs.statSyncNoException에서 예외가 발생하는 문제 해결
  • [#13476, #13452] 수정: jquery를 사용하는 사이트 로드 시 크래시 문제 해결
  • [#14092] 수정: net::ClientSocketHandle 소멸자에서 발생하는 크래시 문제 해결
  • [#14453] 수정: 다음 틱(tick)이 아닌 즉시 포커스 변경 알림 전송

macOS

  • [#13220] 수정: <input file="type"> 파일 열기 대화상자에서 번들을 선택할 수 있는 문제 해결
  • [#12404] 수정: 비동기 대화상자 사용 시 메인 프로세스가 블로킹되는 문제 해결
  • [#12043] 수정: 컨텍스트 메뉴 클릭 콜백 문제 해결
  • [#12527] 수정: 터치바 아이템 재사용 시 이벤트 누수 문제 해결
  • [#12352] 수정: 트레이 제목 충돌 문제 해결
  • [#12327] 수정: 드래그 불가능한 영역 문제 해결
  • [#12809] 수정: 메뉴가 열려 있는 동안 업데이트되지 않도록 수정
  • [#13162] 수정: 트레이 아이콘 경계값이 음수를 허용하지 않는 문제 해결
  • [#13085] 수정: 트레이 제목이 강조될 때 색상이 반전되지 않는 문제 해결
  • [#12196] 수정: enable_run_as_node==false일 때 macOS 빌드 문제 해결
  • [#12157] 수정: 투명 효과가 적용된 프레임리스 윈도우에서 발생하는 추가 문제 해결
  • [#13326] 수정: app.removeAsDefaultProtocolClient 호출 후 macOS 프로토콜을 none으로 설정하도록 수정
  • [#13530] 수정: MAS 빌드에서 개인 API의 잘못된 사용 문제 해결
  • [#13517] 수정: tray.setContextMenu 충돌 문제 해결
  • [#14205] 수정: defaultId가 설정된 경우에도 ESC 키를 눌러 대화상자를 닫을 수 있도록 수정

Linux

  • [#12507] 수정: 오프스크린 윈도우에서 BrowserWindow.focus() 문제 해결

기타 참고 사항

  • PDF 뷰어는 현재 작동하지 않지만, 곧 다시 정상적으로 사용할 수 있도록 작업 중이다.
  • TextFieldButton API는 실험적 기능이므로 기본적으로 비활성화되어 있다.
    • enable_view_api 빌드 플래그를 사용해 활성화할 수 있다.

다음 단계

Electron 팀은 Chromium, Node, V8의 개발 주기와 궁극적으로 동일한 속도를 유지하기 위해 보다 빠르고 원활한 업그레이드 프로세스를 정의하는 작업을 계속 진행하고 있다.