Skip to main content

Introducing Electron Forge 6

· 11 min read

Electron Forge v6.0.0 출시를 발표하게 되어 기쁩니다! 이번 릴리스는 2018년 이후 첫 번째 메이저 업데이트이며, 프로젝트가 electron-userland에서 Github의 메인 electron 조직으로 이동했습니다.

Electron Forge의 새로운 기능과 여러분의 앱에 적용하는 방법을 계속 읽어보세요!

Electron Forge란 무엇인가?

Electron Forge는 Electron 애플리케이션을 패키징하고 배포하기 위한 도구다. Electron의 빌드 도구 생태계를 단일 확장 가능한 인터페이스로 통합하여 누구나 쉽게 Electron 앱을 만들 수 있도록 돕는다.

주요 기능은 다음과 같다:

  • 📦 애플리케이션 패키징 및 코드 서명
  • 🚚 Windows, macOS, Linux에서 커스텀 설치 프로그램 지원 (DMG, deb, MSI, PKG, AppX 등)
  • ☁️ 클라우드 프로바이더를 위한 자동화된 배포 기능 (GitHub, S3, Bitbucket 등)
  • ⚡️ webpack과 TypeScript를 위한 사용하기 쉬운 보일러플레이트 템플릿 제공
  • ⚙️ 네이티브 Node.js 모듈 지원
  • 🔌 확장 가능한 JavaScript 플러그인 API
더 알아보기

Forge의 철학과 아키텍처에 대해 더 알고 싶다면 [Why Electron Forge] 문서를 참고하자.

v6의 새로운 점

완전히 다시 작성됨

v1부터 v5까지 Electron Forge는 현재 중단된 electron-compile 프로젝트를 기반으로 했다. Forge 6는 완전히 다시 작성되어 새로운 모듈식 아키텍처를 도입했으며, 이는 모든 Electron 애플리케이션의 요구를 충족하도록 확장할 수 있다.

지난 몇 년 동안 Forge v6.0.0-beta는 v5와 동일한 기능을 구현했고, 코드 변경이 크게 줄어들어 이제 일반적으로 사용할 준비가 되었다.

잘못된 패키지를 설치하지 마세요

5버전 이하에서는 Electron Forge가 npm의 electron-forge 패키지로 배포되었다. v6부터는 Forge가 모노레포 프로젝트로 구조화되어 여러 작은 프로젝트로 구성된다.

공식 지원

역사적으로 Electron 관리자들은 빌드 도구에 대해 특별한 의견을 제시하지 않았고, 이를 다양한 커뮤니티 패키지에 맡겨왔다. 하지만 Electron이 프로젝트로서 성숙해짐에 따라, 새로운 Electron 개발자들이 자신의 앱을 빌드하고 배포하기 위해 어떤 도구가 필요한지 이해하기가 점점 어려워졌다.

Electron 개발자들이 배포 과정을 더 쉽게 따라갈 수 있도록 우리는 Forge를 Electron의 공식적인 통합 빌드 파이프라인으로 지정하기로 결정했다.

지난 한 해 동안, 우리는 Forge를 점진적으로 공식 Electron 문서에 통합해왔고, 최근에는 Forge를 electron-userland/electron-forge에서 electron/forge 리포지토리로 이전했다. 이제 우리는 드디어 Electron Forge를 일반 사용자들에게 공개할 준비가 되었다!

시작하기

새로운 Forge 프로젝트 초기화

Electron Forge 프로젝트를 새로 시작하려면 create-electron-app CLI 스크립트를 사용하면 된다.

yarn create electron-app my-app --template=webpack
cd my-app
yarn start

이 스크립트는 my-app 폴더에 Electron 프로젝트를 생성한다. 프로젝트는 완전한 JavaScript 번들링과 사전 구성된 빌드 파이프라인을 포함한다.

더 자세한 정보는 Forge 문서의 시작하기 가이드를 참고하면 된다.

퍼스트클래스 웹팩 지원

위 코드 조각은 Forge의 [Webpack Template]을 사용한다. 이 템플릿은 새로운 Electron 프로젝트를 시작하기에 적합하다. 이 템플릿은 @electron-forge/plugin-webpack 플러그인을 기반으로 한다. 이 플러그인은 웹팩과 Electron Forge를 다음과 같은 방식으로 통합한다:

  • webpack-dev-server를 통해 로컬 개발 흐름을 개선한다. 렌더러에서 HMR을 지원한다.
  • 애플리케이션 패키징 전에 웹팩 번들에 대한 빌드 로직을 처리한다.
  • 웹팩 번들링 과정에서 네이티브 Node 모듈을 지원한다.

타입스크립트 지원이 필요하다면 [Webpack + TypeScript Template]을 사용하는 것을 고려해 보면 된다.

기존 프로젝트 가져오기

Electron Forge CLI는 기존 Electron 프로젝트를 가져오는 명령어도 제공한다.

cd my-app
yarn add --dev @electron-forge/cli
yarn electron-forge import

import 명령어를 사용하면 Electron Forge는 몇 가지 핵심 의존성을 추가하고 새로운 forge.config.js 설정 파일을 생성한다. 만약 기존에 사용하던 빌드 도구(예: Electron Packager, Electron Builder, 또는 Forge 5)가 있다면 가능한 한 많은 설정을 자동으로 마이그레이션한다. 일부 기존 설정은 수동으로 마이그레이션해야 할 수도 있다.

수동 마이그레이션에 대한 자세한 내용은 Forge의 [가져오기 문서]에서 확인할 수 있다. 도움이 필요하다면 Discord 서버를 방문해 보자!

Forge로 전환해야 하는 이유

Electron 앱을 패키징하고 배포하기 위한 도구가 이미 있다 하더라도, Electron Forge를 도입함으로써 얻는 이점이 초기 전환 비용을 상쇄할 수 있다.

Forge를 사용하는 데에는 두 가지 주요 이점이 있다:

  1. Forge는 Electron에서 새로운 기능이 지원되자마자 앱 빌드에 바로 적용한다. 이 경우, 새로운 도구 지원을 직접 연결하거나, 다른 패키지가 해당 지원을 구현하기를 기다릴 필요 없이 바로 업그레이드할 수 있다. 최근 예시로는 macOS 유니버설 바이너리ASAR 무결성 검사가 있다.

  2. Forge의 다중 패키지 아키텍처는 이해와 확장이 쉽다. Forge는 명확한 책임을 가진 여러 작은 패키지로 구성되어 있어 코드 흐름을 따라가기 쉽다. 또한, Forge의 확장 가능한 API 설계는 제공된 구성 옵션과 별도로 고급 사용 사례를 위한 추가 빌드 로직을 작성할 수 있게 한다. 커스텀 Forge 플러그인, 메이커, 퍼블리셔를 작성하는 방법에 대한 자세한 내용은 문서의 Electron Forge 확장 섹션을 참고한다.

주요 변경 사항

Forge 6은 오랜 시간 동안 베타 단계를 거쳤으며, 릴리스 속도가 점차 느려졌다. 그러나 2022년 하반기에 개발 속도를 높였고, 최종 안정 버전인 v6.0.0 출시 전 마지막 몇 차례의 릴리스를 통해 주요 변경 사항을 적용했다.

Electron Forge 6 베타 사용자라면 최근 베타 버전(>=6.0.0-beta.65)에서 발생한 주요 변경 사항 목록을 확인하려면 v6.0.0 GitHub 릴리스 노트를 참고한다.

전체 변경 사항과 커밋 내역은 저장소의 CHANGELOG.md에서 확인할 수 있다.

여러분의 피드백을 보내주세요!

Electron Forge 팀은 항상 프로젝트를 더 나은 방향으로 개선하기 위해 노력하고 있습니다. 여러분의 의견을 통해 Electron Forge를 더욱 발전시킬 수 있습니다.

여러분은 다음과 같은 방법으로 도움을 줄 수 있습니다:

  • 기능 요청 제출
  • 이슈 등록
  • 피드백 공유

또한 공식 Electron Discord 서버에 참여하여 Electron Forge 관련 토론에 참여할 수 있습니다. Discord에는 Electron Forge 전용 채널이 마련되어 있습니다.

https://electronforge.io 사이트의 문서에 대한 피드백을 제공하고 싶다면, electron-forge/electron-forge-docs 저장소와 동기화된 GitBook 인스턴스를 활용할 수 있습니다.