서론
Node.js 개발자에게 파일 변경을 감시하는 것은 중요한 작업입니다. 이는 코드베이스에서 변경이 발생할 때 서버를 다시 로드하거나 코드를 재컴파일하는 등의 작업을 자동화하는 데 필요합니다. 이번 글에서는 Node.js에 내장된 파일 감시 기능과 Nodemon을 비교하고, Nodemon에서 네이티브 파일 감시로 전환하는 방법을 소개하겠습니다.
이 블로그는 https://blog.logrocket.com/exploring-native-file-watching-node-js-v22/ 을 공부하면서 의역하고 반역한 것입니다. 정확하지 않은 내용은 원문을 참고해 주시기 바랍니다.
Nodemon의 역할
Nodemon의 중요성
Nodemon은 Node.js 생태계에서 널리 사용되는 유틸리티로, 개발자가 코드 변경 후 서버를 다시 시작해야 하는 번거로움을 덜어줍니다. Nodemon은 파일 변경을 자동으로 감지하여 서버를 재시작함으로써 개발 생산성을 크게 향상시켰습니다.
Nodemon의 주요 기능
- 생산성 향상: 코드 변경 후 서버를 재시작할 필요가 없어 생산성이 높아집니다.
- 일관성 유지: 자동 재시작으로 인해 변경 사항이 일관되게 적용되어 코드 버전 불일치로 인한 오류를 줄일 수 있습니다.
- 활발한 커뮤니티 지원: 풍부한 문서와 튜토리얼, 커뮤니티 기여 덕분에 쉽게 채택할 수 있습니다.
Nodemon은 네이티브 파일 감시 기능이 도입되기 전에 개발 워크플로우를 크게 개선해 주었지만, 이제는 Node.js 최신 릴리스에서 제공하는 네이티브 파일 감시 기능을 고려할 때가 되었습니다.
네이티브 파일 감시 vs Nodemon
기능 비교
네이티브 파일 감시는 Node.js에 직접 통합되어 외부 도구가 필요 없으며, 설정이 간단하고 성능이 최적화되어 있습니다. 하지만, 현재 Nodemon이 제공하는 고급 기능은 지원하지 않습니다.
- 네이티브 파일 감시
- 설치: Node.js에 내장 (버전 18.11.0 이상 필요)
- 사용법:
node --watch app.js
- 설정: 기본 경로 감시 옵션 제공
- 확장 지원: 기본적으로 JavaScript 파일 감시
- 수동 재시작: 지원하지 않음
- 커스텀 실행 파일: 지원하지 않음
- 이벤트 트리거: 지원하지 않음
- Nodemon
- 설치: npm 또는 yarn으로 설치 (npm install -g nodemon)
- 사용법:
nodemon app.js
- 설정: nodemon.json 또는 package.json을 통해 광범위한 설정 가능
- 확장 지원: 다양한 파일 형식 감시 가능
- 수동 재시작:
rs
명령으로 수동 재시작 지원 - 커스텀 실행 파일: execMap 속성을 통해 커스텀 실행 파일 지원
- 이벤트 트리거: 재시작, 시작, 종료 등의 이벤트 훅 지원
선택 가이드
네이티브 파일 감시는 최소한의 설정으로 통합된 솔루션을 찾는 개발자에게 이상적입니다. 반면, Nodemon은 광범위한 설정과 고급 기능이 필요한 경우 더 적합합니다. 각 도구의 장단점을 고려하여 프로젝트 요구 사항과 워크플로우에 맞는 옵션을 선택하는 것이 중요합니다.
네이티브 파일 감시로 전환하기
Node.js 버전 확인
먼저, 터미널에서 아래 명령어를 입력하여 설치된 Node.js 버전을 확인합니다:
node -v
버전이 18.11.0 이상이어야 네이티브 파일 감시 기능을 사용할 수 있습니다. 그렇지 않다면 Node.js 웹사이트에서 최신 버전으로 업데이트하세요.
기본 설정
빈 폴더에 index.js
파일을 만들고 다음 코드를 추가합니다:
console.log("Native File Watching Demo");
그런 다음, 아래 명령어로 네이티브 파일 감시 기능을 활성화합니다:
node --watch index.js
특정 경로 감시
특정 디렉토리를 감시하려면 --watch-path
플래그를 사용합니다:
node --watch-path=./src --watch-path=./tests index.js
Nodemon에서 네이티브 파일 감시로 마이그레이션
기존 프로젝트를 네이티브 파일 감시로 전환하려면 package.json의 시작 스크립트를 업데이트합니다:
{
"scripts": {
"dev": "node --watch index.js"
}
}
프로젝트 구조에 따라 특정 디렉토리를 감시하려면 다음과 같이 수정합니다:
{
"scripts": {
"dev": "node --watch-path=./src --watch-path=./tests index.js"
}
}
콘솔 출력을 유지하려면 --watch-preserve-output
플래그를 사용합니다:
{
"scripts": {
"dev": "node --watch --watch-preserve-output index.js"
}
}
Node.js v22의 기타 주요 업데이트
Node.js v22에서는 여러 가지 중요한 업데이트가 도입되었습니다:
- 웹소켓 클라이언트 기본 활성화: 이제 기본적으로 웹소켓 클라이언트를 사용할 수 있습니다.
- 동기 ES 모듈 로드 지원:
require()
함수를 통해 동기적으로 ES 모듈을 로드할 수 있습니다. - package.json 스크립트 실행:
node --run <script-in-package-json>
명령어를 사용해 스크립트를 실행할 수 있습니다. - 파일 패턴 매칭: glob 및 globSync 메서드를 사용해 파일 경로 패턴 매칭이 가능합니다.
결론
Node.js v22에서 네이티브 파일 감시 기능이 안정화되면서 Nodemon을 대체할 수 있는 좋은 옵션이 생겼습니다. Nodemon은 여전히 유용한 기능을 많이 제공하지만, 네이티브 파일 감시는 더 간편하게 사용할 수 있습니다. 각 도구의 장단점을 잘 비교하여 프로젝트에 가장 적합한 도구를 선택하세요. Happy coding!