일렉트론(Electron)에 nodemon 적용하기: 서버 재 시작 자동화

Node.js nodemon 모듈

nodemon 은 서버 혹은 백 단의 파일이 변경 되었을 때 이를 자동으로 감지하여 애플리케이션을 재 시작 해주는 모듈 입니다.

프론트 쪽의 코드를 변경 했을 땐 브라우저나 앱을 새로 고침만 해줘도 되지만, 백 단 코드를 변경하게 되면 서버를 재시작 해줘야 하는 것은 Node.js 도 마찬가지였습니다.

기존 자바(Java) 기반 웹을 개발해 보셨다면 자바 소스코드를 수정할 때 Tomcat 을 재시작 해주던 경험이 있었을 겁니다. 이를 해결하기 위해 JRebel 같은 도구가 존재 했습니다.

어쨌든, 매번 코드 한 줄 수정할 때 마다 서버를 수동으로 재 시작 한다는 건 매우 비효율적인 부분이겠죠. nodemon 은 이를 해결하기 위한 모듈로 Node.js 서버 자동 재시작으로 파일 수정 즉시 반영: nodemon 모듈 포스팅으로 정리해본 적이 있습니다.

일렉트론(Electron)에 nodemon 적용하기

그리고 일렉트론 또한 메인 프로세스 쪽 코드를 변경하게 되면 서버를 재 시작 해줘야 했고 nodemon 을 적용하여 이를 해결 하려 합니다.

모듈 설치

먼저 적용을 위해 기존 프로젝트에 nodemon을 설치 합니다. 만약, 기존 -g 명령어로 nodemon 을 설치 했다면 다시 설치가 필요 없을 겁니다.

npm install -g nodemon
Bash

package.json 수정

package.json 영역에 scripts 쪽을 수정 합니다. 자신이 원하는 명령어 명을 입력해 주고 다음과 같은 형태로 작성해 줍니다. 아마 아무런 수정이 없었다면 test 가 기본적으로 작성되어 있을 겁니다.

저는 명령어 명을 dev 로 작성하였고 main.js 부분은 자신의 메인 프로세스 js 파일에 맞춰 변경해 주세요.

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon --watch main.js --exec electron ."
  },
JSON

그 다음 터미널에 다음 명령어로 애플리케이션을 실행해봅니다.

npm run dev
Bash

정상적으로 프로그램이 실행 되었으면 main.js 파일을 수정해 봅시다. 제대로 적용 되었다면 자동으로 애플리케이션이 재 시작 됩니다.

일렉트론(Electron) nodemon 동작

nodemon 추가 설정

nodemon 은 ‘nodemon.json’ 파일을 통해 설정할 수 있도록 지원하고 있습니다. 예를 들어 위의 –watch, –exec 부분 등을 json 파일로 설정 가능 합니다. 프로젝트 root 경로에 nodemon.json 을 생성하고 다음과 같이 입력해 줍니다.

{
    "exec": "electron .",
    "watch": ["main.js"]
}
JSON

그 후 package.json 파일은 다음과 같이 수정합니다. 그리고 다시 npm run dev 로 실행하고 제대로 동작하는지 테스트 합니다.

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "nodemon"
  },
JSON

모든 js 파일 변경 감지하기

위의 설정은 main.js 의 변경 만을 감지 합니다. 모든 js 파일의 변경 시 재 시작을 하고 싶다면 main.js 부분을 “*.js” 로 변경해 줍니다.

{
    "exec": "electron .",
    "watch": ["*.js"]
}
JSON

특정 경로 제외하기

js 파일은 메인 프로세스에서만 사용되지 않으므로 렌더러 프로세스의 동작에선 제외하고자 할 때 ignore 옵션으로 해당 경로를 지정해 주면 됩니다.

{
    "exec": "electron .",
    "watch": ["*.js"],
    "ignore": ["front-side/*"]
}
JSON
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
목차
위로 스크롤