Electron 25.0.0
Electron 25.0.0이 출시되었다! 이번 버전은 Chromium 114
, V8 11.4
, 그리고 Node.js 18.15.0
으로 업그레이드되었다. 자세한 내용은 아래를 참고하자!
Electron 팀은 Electron 25.0.0 출시를 발표하게 되어 기쁘게 생각한다. npm install electron@latest
를 통해 npm으로 설치하거나 릴리스 웹사이트에서 직접 다운로드할 수 있다. 이번 릴리스에 대한 자세한 내용은 계속 읽어보자.
피드백이 있다면 Twitter를 통해 공유하거나 Discord 커뮤니티에 참여해 보자. 버그나 기능 요청은 Electron의 이슈 트래커에 보고할 수 있다.
주요 변경 사항
주요 기능
-
Electron의 net 모듈 내에
net.fetch
를 구현했다. 이 기능은 Chromium의 네트워킹 스택을 사용한다. Node.js의 HTTP 스택을 사용하는 Node의fetch()
와는 다르다. 자세한 내용은 #36733과 #36606을 참고한다. -
protocol.handle
을 추가했다. 이는protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol
을 대체하며, 기존 기능을 더 이상 사용하지 않도록 권고한다. #36674 -
Electron 22에 대한 지원을 확장했다. 이는 Chromium과 Microsoft의 Windows 7/8/8.1 지원 중단 계획에 맞추기 위함이다. 자세한 내용은 이 블로그 포스트의 끝 부분에서 확인할 수 있다.
스택 변경 사항
- Chromium
114
- Node.js
18.15.0
- V8
11.4
주요 변경 사항
사용 중단: protocol.{register,intercept}{Buffer,String,Stream,File,Http}Protocol
protocol.register*Protocol
과 protocol.intercept*Protocol
메서드는 protocol.handle
로 대체되었다.
새로운 메서드는 새로운 프로토콜을 등록하거나 기존 프로토콜을 가로챌 수 있으며, 응답은 어떤 타입이든 가능하다.
// Electron 25에서 사용 중단됨
protocol.registerBufferProtocol('some-protocol', () => {
callback({ mimeType: 'text/html', data: Buffer.from('<h5>Response</h5>') });
});
// 대체 코드
protocol.handle('some-protocol', () => {
return new Response(
Buffer.from('<h5>Response</h5>'), // 문자열이나 ReadableStream도 가능
{ headers: { 'content-type': 'text/html' } },
);
});
// Electron 25에서 사용 중단됨
protocol.registerHttpProtocol('some-protocol', () => {
callback({ url: 'https://electronjs.org' });
});
// 대체 코드
protocol.handle('some-protocol', () => {
return net.fetch('https://electronjs.org');
});
// Electron 25에서 사용 중단됨
protocol.registerFileProtocol('some-protocol', () => {
callback({ filePath: '/path/to/my/file' });
});
// 대체 코드
protocol.handle('some-protocol', () => {
return net.fetch('file:///path/to/my/file');
});
더 이상 사용되지 않음: BrowserWindow.setTrafficLightPosition(position)
BrowserWindow.setTrafficLightPosition(position)
은 더 이상 사용되지 않는다. 대신 BrowserWindow.setWindowButtonPosition(position)
API를 사용해야 한다. 이 API는 위치를 시스템 기본값으로 재설정할 때 { x: 0, y: 0 }
대신 null
을 인자로 받는다.
// Electron 25에서 더 이상 사용되지 않음
win.setTrafficLightPosition({ x: 10, y: 10 });
win.setTrafficLightPosition({ x: 0, y: 0 });
// 대체 코드
win.setWindowButtonPosition({ x: 10, y: 10 });
win.setWindowButtonPosition(null);
더 이상 사용되지 않음: BrowserWindow.getTrafficLightPosition()
BrowserWindow.getTrafficLightPosition()
은 더 이상 사용되지 않는다. 이제는 BrowserWindow.getWindowButtonPosition()
API를 사용해야 한다. 이 API는 사용자 지정 위치가 없을 때 { x: 0, y: 0 }
대신 null
을 반환한다.
// Electron 25에서 더 이상 사용되지 않음
const pos = win.getTrafficLightPosition();
if (pos.x === 0 && pos.y === 0) {
// 사용자 지정 위치가 없음.
}
// 대체 코드
const ret = win.getWindowButtonPosition();
if (ret === null) {
// 사용자 지정 위치가 없음.
}
새로운 기능
net.fetch()
를 추가했다. #36733net.fetch
는file:
URL과protocol.register*Protocol
로 등록된 커스텀 프로토콜에 대한 요청을 지원한다. #36606
- BrowserWindow.set/getWindowButtonPosition API를 추가했다. #37094
protocol.handle
을 추가하고,protocol.{register,intercept}{String,Buffer,Stream,Http,File}Protocol
을 대체하며 더 이상 사용하지 않는다. #36674webContents
와<webview>
태그에will-frame-navigate
이벤트를 추가했다. 이 이벤트는 프레임 계층 구조 내의 어떤 프레임이 네비게이션을 시도할 때마다 발생한다. #34418- 네비게이션 이벤트에 initiator 정보를 추가했다. 이 정보를 통해
window.open
이 부모 프레임에 의해 발생한 것인지, 자식 프레임에 의해 시작된 것인지 구분할 수 있다. #37085 net.resolveHost
를 추가했다. 이 함수는defaultSession
객체를 사용해 호스트를 해결한다. #38152app
에 새로운 'did-resign-active' 이벤트를 추가했다. #38018webContents.print()
에 여러 표준 페이지 크기 옵션을 추가했다. #37159ses.setDisplayMediaRequestHandler()
콜백에enableLocalEcho
플래그를 추가했다. 이 플래그는audio
가WebFrameMain
일 때 원격 오디오 입력이 로컬 출력 스트림에서 반향되도록 허용한다. #37315powerMonitor
에 열 관리 정보를 추가했다. #38028session.fromPath()
API에 절대 경로를 전달할 수 있도록 허용했다. #37604webContents
에audio-state-changed
이벤트를 노출시켰다. #37366
22.x.y 지속 지원
Farewell, Windows 7/8/8.1에서 언급한 바와 같이, Electron 22(Chromium 108)의 종료 예정일은 2023년 5월 30일에서 2023년 10월 10일로 연장된다. Electron 팀은 2023년 10월 10일까지 Electron 22에 대한 보안 수정 사항을 계속해서 백포트할 예정이다. 10월 지원 일정은 Chromium과 Microsoft의 연장된 지원 일정을 따른다. 2023년 10월 11일부터 Electron 팀은 지원을 최신 3개의 안정적인 주요 버전으로 축소할 것이며, 이 버전들은 Windows 7/8/8.1을 더 이상 지원하지 않는다.
E25 (2023년 5월) | E26 (2023년 8월) | E27 (2023년 10월) |
---|---|---|
25.x.y | 26.x.y | 27.x.y |
24.x.y | 25.x.y | 26.x.y |
23.x.y | 24.x.y | 25.x.y |
22.x.y | 22.x.y | -- |
다음은?
단기적으로, Electron 팀은 Chromium, Node, V8 등 Electron을 구성하는 주요 컴포넌트의 개발 동향을 꾸준히 따라가는 데 집중할 것이다.
Electron의 공개 타임라인에서 더 자세한 정보를 확인할 수 있다.
향후 예정된 변경 사항에 대한 자세한 내용은 Planned Breaking Changes 페이지에서 찾아볼 수 있다.