Javascript | Typescript/Node.js

[Node.js] Nodemon에서 tsc-watch 로 변경하여 빌드속도 개선하기

devMarco 2021. 2. 21. 21:55

이번 포스팅에서는 nodemon을 사용 중이던 서버 환경의 트랜스파일 속도를 개선하여, 개발 생산성을 높인 경험을 공유합니다.

이슈

기존 서버 프로젝트에서 개발용으로 nodemon 을 사용하고 있었다. nodemon은, node.js 라이브러리인데, 서버 소스코드가 바뀌면 자동으로 서버를 재시작해준다. 때문에 소스코드 변경 후에 실행중인 서버를 종료하지 않아도 서버를 다시 시작하여 편리하다.

다만, nodemon은 치명적인 단점이 있는데, 다시 시작할 때마다 전체 소스코드를 트랜스파일 하기에 10초~20초 정도의 트랜스파일을 기다려야 한다. 간단한 로그 코드 한 줄을 추가해도 10초 이상 기다려야하니 답답할 노릇이었다.

해결

nodemon watch, nodemon incremental 등의 키워드로 검색을 시도했고, 나와 비슷한 사례가 스택오버플로우에 있었다.(참고자료)

tsc-watch 라는 노드 모듈을 활용하면, 트랜스파일을 변경된 파일에 대해서만 진행 후 서버를 바로 재시작할 수 있다.

"scripts": {
  "start": "./node_modules/.bin/tsc-watch --onSuccess \"node .\""
}

리뷰

해결 방법 자체는 간단했다. tsc watch로 전환하되, nodemon처럼 소스 변경이 일어났을 때 재시작하도록 해주면 되는 것. 내 생각을 날카로운 영어 키워드로 바꿔내는 것이 주요했다. watch, incremental 등

의의

console.log 하나 넣고 10초 이상 기다리는 고통에서 해방되어 너무 기쁘다...!! 개발팀의 생산성과 행복 향상에 기여하였다.

참고자료

https://stackoverflow.com/questions/38276862/is-there-a-way-to-use-npm-scripts-to-run-tsc-watch-nodemon-watch