# 2024년부터 사용할 최신 Node.js 런타임 기능들

> Clean Markdown view of GeekNews topic #15139. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15139](https://news.hada.io/topic?id=15139)
- GeekNews Markdown: [https://news.hada.io/topic/15139.md](https://news.hada.io/topic/15139.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-06-03T09:54:02+09:00
- Updated: 2024-06-03T09:54:02+09:00
- Original source: [snyk.io](https://snyk.io/blog/10-modern-node-js-runtime-features/)
- Points: 19
- Comments: 8

## Topic Body

#### 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` 플래그를 사용하여 정책 파일을 지정하고, 모듈 로딩을 제어 가능

## Comments



### Comment 25948

- Author: cometkim
- Created: 2024-06-05T11:45:35+09:00
- Points: 1

`node --run` 언급이 없네요. 최신 버전부터 NPM 의존하지 않고 스크립트 실행이 가능합니다. 부팅이 수십배 빨라요

### Comment 25896

- Author: tsboard
- Created: 2024-06-03T20:07:34+09:00
- Points: 1

이번에 tsboard 프로젝트를 해보면서 Bun 런타임이랑 이래저래 비교를 많이 해봤는데, Node.js 가 정말 다 좋지만 (1) TypeScript 미지원 (2) 속도 이 두가지가 여전히 아쉽습니다. 호환성이나 하드웨어 자원을 딱히 가리지 않는 점 등은 정말 대단하다고 생각합니다.   
  
TypeScript, 동작 속도 등을 고려하신다면 Bun 런타임도 한 번 고려해 보세요...!

### Comment 25905

- Author: [hidden]
- Created: 2024-06-04T09:02:30+09:00
- Points: 1
- Parent comment: 25896
- Depth: 1

[숨김 처리된 댓글입니다]

### Comment 25880

- Author: edunga1
- Created: 2024-06-03T14:19:55+09:00
- Points: 1

우와~ 원문에 Jest 언급도 있네요.

### Comment 25956

- Author: edunga1
- Created: 2024-06-05T16:43:02+09:00
- Points: 1
- Parent comment: 25880
- Depth: 1

작은 프로젝트에서 jest - > node.js 이전해 봤는데, 검증 함수 지원이 너무 부족해서 별로네요 :(

### Comment 25869

- Author: kandk
- Created: 2024-06-03T10:30:02+09:00
- Points: 1

최신 트렌드들을 엄청 빨리 받아들이는 군요..

### Comment 25868

- Author: dylanju
- Created: 2024-06-03T10:28:56+09:00
- Points: 1

와 네이티브 모킹!
