<배경>
본격적으로 프로젝트를 진행하기 앞서, 코드를 수정할때마다 서버가 자동으로 시작되는 방법을 찾기 시작했다.
코드를 수정할때마다 서버를 수동으로 재시작한다면 무척이나 번거로운 일이 될것임을 잘 알기에..
코드를 수정하고 서버를 띄우는 일련의 과정을 생각해보면 이러한 과정이 되겠지만
- ts 파일이 수정된다.
- ts 파일을 컴파일 한다.
- 만들어진 js 파일로 서버를 시작한다.
프로젝트 규모가 커지면 컴파일과정이 길어질테고 코드한줄만 수정이되면 모든 ts 파일이 컴파일됨으로 비효율적이라고 판단했다.
그래서 ts-node 를 사용해 사전컴파일 없이 서버를 띄우는 방법으로 방향을 잡았다.
자동으로 서버를 재시작하는 여러가지 방법이 있지만, 이 포스트에서는 Nodemon 으로 프로젝트 내의 변경사항을 감지하고 ts-node 를 사용하여 사전컴파일 작업없이 빠르게 서버를 재시작해주는 과정을 기록할 것이다.
* 문제 접근방법이 잘못되었다면 피드백남겨주시면 감사하겠습니다.
Nodemon 이란 ?
Nodemon 은 node.js 기반으로 만들어진 애플리케이션의 파일 시스템을 지켜보며 변경사항이 생기면 프로세스를 자동으로 재시작 시켜주는 CLI 유틸리티이다.
* documentation - github.com/remy/nodemon#nodemon
1. Nodemon 설치하기
npm install -D nodemon
nodemon 을 global 혹은 local 에 설치할 수 있다. 해당 글에서는 로컬에 설치 해주었다.
*로컬로 설치할경우 직접 nodemon 에 접근할 수 없다. npx 를 사용해주어야한다.
2. ts-node 설치하기
npm install -D ts-node
ts-node 는 사전 컴파일 없이 즉시 typescript 를 런타임 환경에서 실행시켜준다. 이 패키지를 사용해 컴파일 없이 서버를 띄울것이다.
* documentation - www.npmjs.com/package/ts-node
3. 스크립트 작성
build: 컴파일을 수행
start: js 로 컴파일된 파일을 사용하여 서버 실행
dev:server: ts 파일만 사용해 서버를 실행
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "tsc",
"start": "node ./dist/app.js",
"dev:server": "nodemon --watch src --exec 'npx' 'ts-node' src/app.ts"
},
* nodemon --watch <감시할 디렉터리>
* npx ts-node <실행할 ts파일>
4. 명령어
ts 파일을 js 파일로 컴파일 작업 수행
npm run build
js 파일을 런타임에서 서버 시작
npm run start
ts 파일만을 가지고 런타임에서 서버 시작
npm run dev:server
'BACKEND > node.js' 카테고리의 다른 글
[node.js] dotenv 환경변수 관리하기 (0) | 2021.04.25 |
---|