프라이D
프라이Develog(❁´◡`❁)
프라이D
전체 방문자
오늘
어제
  • ALL (378)
    • TDD, Cleancode with JavaScr.. (5)
    • 프로젝트 (32)
      • work (3)
      • 직접 만드는 기술 블로그 (2)
      • 데일리 옥션 (19)
      • 모락모락 (8)
    • Computer Science (1)
    • Algorithm & 자료구조 (94)
      • 알고리즘 w.JavaScript (53)
      • 자료구조 (5)
      • (인프런) 자바스크립트 알고리즘 문제풀이 (34)
    • JavaScript (45)
      • JavaScript (41)
      • 모던 자바스크립트 Deep Dive (4)
    • WEB (13)
    • 회고 (12)
    • TIL (109)
    • WIL (7)
    • Stacks (20)
      • React.js (6)
      • Next.js (1)
      • Redux (3)
      • Node.js (2)
      • GIT (2)
      • SAP (1)
    • 15일 메이킹 프로젝트 (15)
    • 이전 기록 (14)
    • ETC. (5)
    • ---------------2021 (6)
      • 내일배움단-웹개발 5주 (2)
      • 정보처리기사 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 자바스크립트비트마스크
  • 스파르타코딩클럽
  • 모던자바스크립트딥다이브
  • 투포인터알고리즘
  • 알고리즘
  • 내일배움단
  • 비트마스크
  • 코딩프로젝트
  • JavaScript
  • 2023 인프콘 후기
  • 국비지원
  • 자바스크립트
  • nomadcoder
  • 자바스크립트알고리즘
  • 내일배움카드
  • 코드스테이츠
  • vanilaJS
  • MySQL
  • Til
  • nomadcoders

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
프라이D

프라이Develog(❁´◡`❁)

[Electron.js] electron 의 rebuild 란?
Stacks

[Electron.js] electron 의 rebuild 란?

2024. 2. 18. 22:51

electron 의 rebuid 라는 커맨드는, 현재 설치된 Electron 버전에 대해 네이티브 Node.js 모듈을 재 구축하기 위해 사용한다.

일전에 사내 프로젝트에서 electron 과 serialport 라이브러리를 사용할 때, 이 rebuild 커맨드에 대해 알지 못해 상당히 해멨던 적이 있는데... 간단하게나마 정리해 보고자 한다.

 

왜 reubild 와 같은 작업이 필요하냐? rebuild - 그러니까 재컴파일 과정이 없으면 일렉트론 앱과 네이티브 Node.js 모듈, 그러니까 파일 시스템, 운영체제 등 저수준 기능에 접근하는 모듈간에 문제가 발생할 수 있다. 왜냐면, 일렉트론의 Node.js 는 표준 Node.js 환경과 다른 버전을 사용하기 때문이다... 알다시피 일렉트론은 크로미움 + Node.js 의 결합이기 때문에 표준 V8과 다른 버전의 노드를 내부적으로 사용하고 있다. 따라서 표준 노드 버전에 맞도록 컴파일된 모듈은 rebuild 를 거쳐 Electron 용으로 재 컴파일을 해야할 필요가 있다. 관련 문서는 이쪽으로...

 

설명에 따르면, Electron 은 표준 Node.js 환경과 다른 ABI (Application Binary Interface) 를 사용한다고 하는데... ABI 란... 응용 프로그램과 운영체제 사이 혹은 다른 프로그램 모듈 간의 인터페이스를 의미한다. 그러니까 ABI는 소프트웨어간 혹은 소프트웨어와 운영 체제 간 어떻게 통신을 할 것인지, 함수의 호출 방법이나 데이터 구조/해석 방법등을 정의한 저수준 인터페이스이다. 

 

따라서 프로젝트 개발 의존성에 새 모듈을 추가할 때 혹은 프로젝트를 처음 셋팅한 이후 electron-rebuild 명령어를 추가 실행해 주는 것이 맞고, 이를 사용하기 위해선 @electron/rebuild 를 의존성에 추가해 커맨드를 실행하면 된다. 

 

electron-forge vs electron-builder

현재 사내 프로젝트에선 환경에 맞게 빌드를 할 때마다 rebuild 커맨드를 실행해야 한다는 사실을 몰라서... 빌드 툴 선정시 serial port 가 정상 동작 되었던 electron-forge 를 택했다. electron forge 에서만 정상 동작했던 이유가, 개발모드 그리고 배포판 빌드를 할 때 rebuild 커맨드를 자동으로 실행했기 때문이고... 이 문제가 아니었다면 여러 상황을 고려했을 때 자료가 상대적으로 많은 electron-builder 를 사용했어도 됬겠다는 생각이 든다. 

위 자료는 forge, builder 그리고 packager 세 가지 메인(?) 빌드 툴의 다운로드 횟수를 비교한 것인데, 최근엔 forge 도 많이 사용하고 있는 것으로 나타나긴 한다. 참고로 electron-forge 는 electron 이 메인테이너이고, electron-builder 는 electron-userland 라는 커뮤니티 기반으로 유지보수가 이루어 지고 있다. 또 일렉트론 공식 문서를 보면 빌드와 배포 설명에 대해 forge를 기반으로 하고 있기도 함...

 

electron-forge 를 선택하고 s3 기반 auto update 를 하기 위해 많은 삽질을 했었는데... 예전에 자료 조사 했던 것에 따르면 electron-builder 관련 업데이트 자료도 많고 잘 되어 있어서... 상황에 맞는 툴을 선택해 사용하면 될 것 같다. 

저작자표시

'Stacks' 카테고리의 다른 글

[Node.js] Node의 require module 은 어떻게 동작하는가?  (0) 2024.02.04
[Node.js] Streams 에 대해서 알아봐요.  (0) 2024.01.28
[Electron.js] 일렉트론에 대해서 알아보자!  (0) 2024.01.21
[Node.js] Node란 무엇이냐..이벤트 루프란..?  (1) 2024.01.14
    'Stacks' 카테고리의 다른 글
    • [Node.js] Node의 require module 은 어떻게 동작하는가?
    • [Node.js] Streams 에 대해서 알아봐요.
    • [Electron.js] 일렉트론에 대해서 알아보자!
    • [Node.js] Node란 무엇이냐..이벤트 루프란..?
    프라이D
    프라이D
    틀린내용 정정 및 개선사항은 언제든지 댓글 달아주세요 :D

    티스토리툴바