Forge vs Builder — 빌드 도구 비교와 선택 기준
"Forge는 공식 도구, Builder는 커뮤니티 강자" — 프로젝트 규모와 요구사항에 따라 선택이 달라집니다.
개요 비교
| 항목 | Electron Forge | Electron Builder |
|---|---|---|
| 유지보수 | Electron 공식 팀 | 커뮤니티 |
| 설정 방식 | JavaScript 설정 | YAML/JSON/JS |
| 번들러 | Webpack/Vite 통합 | 외부 번들러 사용 |
| 자동 업데이트 | update.electronjs.org | electron-updater |
| 패키징 포맷 | squirrel, dmg, deb 등 | nsis, dmg, snap, AppImage 등 |
| 플러그인 시스템 | 있음 | 제한적 |
| 모노레포 지원 | 가능 | 가능 |
Electron Forge
설정
# 새 프로젝트 생성
npx create-electron-app my-app --template=vite-typescript
cd my-app
npm start
// forge.config.js
module.exports = {
packagerConfig: {
asar: true,
icon: 'assets/icon',
},
makers: [
{
name: '@electron-forge/maker-squirrel',
config: { name: 'my_app' },
},
{
name: '@electron-forge/maker-dmg',
config: { format: 'ULFO' },
},
{
name: '@electron-forge/maker-deb',
config: {},
},
{
name: '@electron-forge/maker-zip',
platforms: ['darwin'],
},
],
plugins: [
{
name: '@electron-forge/plugin-vite',
config: {
build: [
{ entry: 'src/main.js', config: 'vite.main.config.js' },
{ entry: 'src/preload.js', config: 'vite.preload.config.js' },
],
renderer: [
{ name: 'main_window', config: 'vite.renderer.config.js' },
],
},
},
],
};
Forge 명령어
npm start # 개발 모드
npm run package # 패키징 (실행 가능한 앱)
npm run make # 배포용 인스톨러 생성
npm run publish # 빌드 + 배포
Electron Builder
설정
npm install electron-builder --save-dev
# electron-builder.yml
appId: com.myapp.desktop
productName: 내 앱
directories:
output: dist
buildResources: build
files:
- "dist/**/*"
- "package.json"
mac:
target:
- dmg
- zip
icon: build/icon.icns
category: public.app-category.developer-tools
win:
target:
- nsis
- portable
icon: build/icon.ico
nsis:
oneClick: false
allowToChangeInstallationDirectory: true
linux:
target:
- AppImage
- deb
icon: build/icons
category: Development
publish:
provider: github
releaseType: release
Builder 명령어
npx electron-builder --mac # macOS 빌드
npx electron-builder --win # Windows 빌드
npx electron-builder --linux # Linux 빌드
npx electron-builder -mwl # 전체 플랫폼 빌드
선택 기준
Forge를 선택하는 경우
- Electron 공식 지원과 안정성을 원할 때
- 플러그인 기반으로 확장하고 싶을 때
- Webpack/Vite 번들링이 내장되길 원할 때
- 소규모~중규모 프로젝트
Builder를 선택하는 경우
- 다양한 인스톨러 포맷이 필요할 때 (NSIS, AppImage, Snap 등)
- 자동 업데이트 설정을 세밀하게 제어하고 싶을 때
- 이미 Builder를 사용하는 프로젝트를 유지보수할 때
- 대규모 프로젝트에서 검증된 도구가 필요할 때
면접 포인트 정리
- Forge: 공식 도구, 플러그인 기반, 번들러 통합
- Builder: 커뮤니티 표준, 다양한 인스톨러 포맷, YAML 설정
- 새 프로젝트라면 Forge가 추천, 기존 프로젝트는 현재 사용 중인 도구 유지
- 두 도구 모두 코드 서명, 자동 업데이트, CI/CD 연동 지원
빌드 도구를 선택했으면, 이제 중급 주제인 IPC 심화로 넘어갑시다.
댓글 로딩 중...