2024년부터 사용할 최신 Node.js 런타임 기능들
(snyk.io)Node.js 테스트 러너
- Node.js에는 이제 기본 테스트 러너 기능이 포함됨
- 테스트 파일에서
node:test
모듈을 임포트하여 테스트 작성 가능 - 단일 테스트 실행:
node --test tests/math.test.js
- 테스트 파일을 자동으로 감지하고 실행
- 기본 제공되는
assert
모듈을 사용하여 테스트 확인 가능 - 테스트 스위트와 훅을 사용하여 관련된 테스트를 그룹화하고 관리 가능
Node.js 네이티브 모킹
- Node.js에는 이제 네이티브 모킹 기능이 포함됨
- 다른 테스트 프레임워크에서 제공하는 모킹 기능을 Node.js에서 직접 사용할 수 있음
-
node:test
모듈에서mock
메서드를 사용하여 모킹 기능 구현 가능
Node.js 네이티브 테스트 커버리지
- 테스트 커버리지는 소스 코드의 테스트 범위를 이해하는 데 도움을 줌
- Node.js 20부터 네이티브 테스트 커버리지 기능 제공
-
--experimental-coverage
플래그를 사용하여 테스트 커버리지 데이터 생성 가능 - 커버리지 보고서를 통해 테스트되지 않은 코드 영역을 식별할 수 있음
Node.js 와치 모드
- 와치 모드는 파일 변경을 실시간으로 감지하고 스크립트를 자동으로 재실행함
- Nodemon과 같은 외부 의존성이 필요하지 않음
-
--watch
플래그를 사용하여 파일 변경을 감지하고 스크립트를 자동으로 실행 가능
Node.js 코어팩 (Corepack)
- 코어팩은 프로젝트와 패키지 관리자 간의 다리 역할을 함
- 프로젝트에서 사용할 패키지 관리자를 명시하고, Corepack이 이를 자동으로 관리함
-
corepack enable
명령어로 코어팩을 활성화 가능
Node.js .env 로더
- Node.js 20부터 네이티브로 .env 파일에서 환경 변수를 로드하는 기능 제공
-
--env-file
플래그를 사용하여 .env 파일을 로드 가능 - 여러 .env 파일을 로드하여 다양한 환경 설정 가능
Node.js import.meta 지원
- Node.js v20.11.0과 v21.2.0에서
import.meta.filename
과import.meta.dirname
지원 - 파일 경로와 디렉터리 이름을 더 쉽게 가져올 수 있음
Node.js 네이티브 타이머 프라미스
- Node.js v15부터 타이머를 프라미스 형태로 사용 가능
-
setTimeout
과setInterval
을 프라미스로 사용하여 비동기 코드를 더 간결하게 작성 가능
Node.js 퍼미션 모듈
- Node.js 애플리케이션의 리소스 접근을 제어하는 실험적 기능
-
--experimental-permission
플래그를 사용하여 파일 시스템, 네트워크, 환경 변수 등의 접근을 제한 가능
Node.js 폴리시 모듈
- 악성 코드의 로딩을 방지하는 보안 기능
-
--experimental-policy
플래그를 사용하여 정책 파일을 지정하고, 모듈 로딩을 제어 가능
이번에 tsboard 프로젝트를 해보면서 Bun 런타임이랑 이래저래 비교를 많이 해봤는데, Node.js 가 정말 다 좋지만 (1) TypeScript 미지원 (2) 속도 이 두가지가 여전히 아쉽습니다. 호환성이나 하드웨어 자원을 딱히 가리지 않는 점 등은 정말 대단하다고 생각합니다.
TypeScript, 동작 속도 등을 고려하신다면 Bun 런타임도 한 번 고려해 보세요...!
vite나 Next.js 등 몇몇 에코시스템이 Node 중심으로 이루어진 프로젝트에는 아직 시기상조인 게 아쉽습니다. 물론 Bun 잘못은 아니지만, 쓸 날이 왔으면 좋겠군요.