"Forge는 공식 도구, Builder는 커뮤니티 강자" — 프로젝트 규모와 요구사항에 따라 선택이 달라집니다.


개요 비교

항목Electron ForgeElectron Builder
유지보수Electron 공식 팀커뮤니티
설정 방식JavaScript 설정YAML/JSON/JS
번들러Webpack/Vite 통합외부 번들러 사용
자동 업데이트update.electronjs.orgelectron-updater
패키징 포맷squirrel, dmg, deb 등nsis, dmg, snap, AppImage 등
플러그인 시스템있음제한적
모노레포 지원가능가능

Electron Forge

설정

BASH
# 새 프로젝트 생성
npx create-electron-app my-app --template=vite-typescript
cd my-app
npm start
JAVASCRIPT
// 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 명령어

BASH
npm start          # 개발 모드
npm run package    # 패키징 (실행 가능한 앱)
npm run make       # 배포용 인스톨러 생성
npm run publish    # 빌드 + 배포

Electron Builder

설정

BASH
npm install electron-builder --save-dev
YAML
# 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 명령어

BASH
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 심화로 넘어갑시다.

댓글 로딩 중...