티스토리 뷰

728x90
반응형

 NodeJS 동적 반영 환경 구성 

개발환경에서 매번 JavaScript 가 반영될때 마다 node를 재기동하는 것은 매우 번거로운 작업이 될 것이다.

이를 편리하게 적용하고 반영하기 위해 2가지 모듈을 가이드하고자 한다.

- nodemon

npm install --save nodemon

- pm2

npm install --save pm2

--save option은 추가한 두 node module을 package.json에 저장할 것인지를 지정하는 옵션이다.

 Node 기동 방법 

Node를 기동하는 방법은 크게 2가지가 있다.

1) node 명령어를 직접 입력하는 방법

node 명령어를 직접 입력하여 기동하는 방법은 다음과 같다.

앞서 설치한 nodmon 또는 pm2를 통해 기동할 수 있다.

[nodemon]

D:\NodeJS\SampleAPP>nodemon app.js
[nodemon] 2.0.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
[nodemon] clean exit - waiting for changes before restart

===> 재기동 시

[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
[nodemon] clean exit - waiting for changes before restart

- nodemon으로 기동 시 동적 반영에 포커싱이 맞춰져 있으며, Exception Trace에 대한 처리를 지원한다. 다만, Client 호출에 대한 결과를 표출하지는 않는다.

[pm2]

D:\NodeJS\SampleAPP>pm2-dev start ./bin/www
==========================================================
--- PM2 development mode ------------------------------------------------------
Apps started         : www
Processes started    : 1
Watch and Restart    : Enabled
Ignored folder       : node_modules
==========================================================

==> 재기동 시

[rundev] App www restarted

===> 호출 시

www-0  | GET / 200 10.740 ms - 207
www-0  | GET /stylesheets/style.css 200 2.279 ms - 111
www-0  | GET /favicon.ico 404 2.136 ms - 893

- pm2로 기동 시 동적 반영은 물론 Exception Trace, 호출 기반 AccessLog 등 폭 넓은 정보를 제공하지만, nodemon 대비 다소 무거워 개발환경에 사용 시 CPU, Memory 사용률에 유의해야 한다.

 

2) package.json에 저장된 npm scripts를 사용하는 방법

node 명령어로 직접 기동하는 방법은 package.json에 scripts로 정의할 수 있다.

{

  "name": "sampleapp",

  "version": "0.0.0",

  "private": true,

  "scripts": {

    "start": "node ./bin/www"

  },

  "dependencies": {

    "cookie-parser": "~1.4.4",

    "debug": "~2.6.9",

    "ejs": "~2.6.1",

    "express": "~4.16.1",

    "http-errors": "~1.6.3",

    "morgan": "~1.9.1",

    "nodemon": "^2.0.4",

    "pm2": "^4.4.0"

  }

}

이는 VSCode를 통해 손쉽게 기동할 수 있도록 명령어를 Scripts에 정의하여 사용할 수 있다.

다음은 개발환경에 적용하기 위한 serve라는 script를 추가하는 과정이다.

{

  "name": "sampleapp",

  "version": "0.0.0",

  "private": true,

  "scripts": {

    "servestart": "pm2-dev start ./bin/www",

    "servestop": "pm2-dev stop ./bin/www",

    "start": "node ./bin/www"

  },

  "dependencies": {

    "cookie-parser": "~1.4.4",

    "debug": "~2.6.9",

    "ejs": "~2.6.1",

    "express": "~4.16.1",

    "http-errors": "~1.6.3",

    "morgan": "~1.9.1",

    "nodemon": "^2.0.4",

    "pm2": "^4.4.0"

  }

}

위와 같이 scripts에 servestart, servestop 이라는 script를 추가한다.

해당 명령어들은 VSCode의 NPM SCRIPTS에서 실행할 수 있다.

왼쪽 하단의 NPM SCRIPTS에서 원하는 명령어를 선택하고 실행하면 된다.

다음과 같이 servestart를 선택하고 실행하면, Task-servestart라는 TERMINAL이 생성되고 pm2-dev가 기동되는 것을 확인할 수 있다.

이는 3000 포트로 기동되며, 다음과 같이 호출해 볼 수 있다.

pm2-dev는 다음과 같이 호출 process에 대한 accesslog를 함께 표출해 준다.

"이와 같이 nodemon & pm2를 통해 JavaScript를 기동하고 변경에 대해 동적반영할 수 있도록 개발환경을 구성할 수 있다. "

728x90
반응형