인기 npm 패키지들을 대체하는 최신 Node.js 내장 기능들
node-fetch > Global fetch
Node.js 18 부터 브라우저와 동일한 fetch()가 전역 함수로 제공됨
ws > Global WebSocket
Node.js 21부터 글로벌 WebSocket 클래스로 클라이언트 측 WebSocket 연결 지원
테스트 프레임워크 > node:test
Node.js 18부터 mocha, jest 등을 대체하는 내장 테스트 러너 node:test 제공
기본적인 단위 테스트 작성 및 실행 지원
모듈 수준 테스트에는 충분하나, 풀스택 애플리케이션 개발에는 기존 프레임워크 장점 존재
sqlite3 / better-sqlite3 > node:sqlite
Node.js 18부터 SQLite 접근을 위한 실험적 node:sqlite 모듈 도입 중
기존 네이티브 바인딩 패키지의 컴파일 문제 및 업그레이드 시 오류 해결
메모리 내 데이터베이스 생성, 테이블 생성 등 기본 작업 지원
아직 실험 단계이므로 고급 성능 튜닝이나 추가 기능이 필요하면 커뮤니티 패키지 사용 권장
chalk / kleur > util.styleText()
Node.js 20.12.0 부터 util.styleText()로 콘솔 텍스트 스타일링 가능
22.17.0 부터 안정화
색상, 굵게, 밑줄 등 기본적인 테스트 스타일 적용
복잡한 테마, 체이닝 문법, 하위 호환성이 필요하면 chalk 등을 계속 사용 가능
strip-ansi > util.stripVTControlCharaters()
ANSI 이스케이프 코드 제거 기능을 내장 함수로 제공
로그에서 문자를 안전하게 제거
대부분의 사용 사례를 네이티브로 커버하여 서드파티 패키지 불필요
glob > fs.glob()
Node.js 22 부터 파일 패턴 검색을 위한 내장 fs.glob() 추가
22.17.0에서 안정화
rimraf > fs.rm({ recursive: true })
디렉토리 재귀 삭제를 네이티브 API로 지원
mkdirp > fs.mkdir({ recursive: true })
디렉토리 재귀 생성을 네이티브 API로 지원
uuid > crypto.randomUUID()
Node.js 14.17.0 부터 UUID 생성 함수 제공
base64-js / atob > atob, btoa
Node.js 20 부터 브라우저와 동일한 base64 인코딩/디코딩 API 제공
폴리필 없이 base64 처리 가능
url-pattern > URLPattern
Node.js 20부터 글로벌 API 실험적으로 제공
라우트 매칭, 경로 파라미터 추출 등 지원
아직 실험 단계로 안정화 필요
dotenv > --env-file 플래그
Node.js 20.10.0 부터 --env-file 플래그로 환경변수 로딩 지원
실행 시 .env 파일을 직접 로드
아직 실험 단계
event-target-shim > EventTarget
Node.js 15부터 Web 표준 이벤트 타켓 이벤트 시스템을 글로벌로 제공
15.4 부터 안정화
tsc > Node.js TypeScript 실행
Node.js 21부터 --experimental-strip-types 플래그로 .ts 파일 직접 실행 가능
타입 제거만 수행, 전체 타입 체킹은 미지원
아직 실험 단계
Reference
https://news.hada.io/topic?id=23535
인기 npm 패키지들을 대체하는 최신 Node.js 내장 기능들 | GeekNews
최근 Node.js는 기존에 npm 패키지로만 가능했던 기능들을 런타임에 내장하며 빠르게 발전 중임이를 통해 공급망 보안 리스크 감소, 코드 이식성 향상, 의존성 축소, 유지보수 간소화가 가능하게
news.hada.io