피드로 돌아가기
Node.js BlogBackend
원문 읽기
Node.js 15.0.0이 주요 API 제거 및 npm 7 업그레이드로 메이저 버전 변경사항 13건 구현
Node.js 15.0.0 (Current)
AI 요약
Context
Node.js 14 이상에서 deprecated된 API들이 장기간 유지되면서 코드베이스 복잡성이 증가하고 있었다. npm 6의 peer dependency 미설치 동작이 패키지 의존성 관리에 혼란을 초래하고 있었다.
Technical Solution
- REPL 모듈에서
repl.memory(),repl.turnOffEditorMode(),repl.parseREPLKeyword(),bufferedCommand속성,.rli제거 - net 모듈에서
server.connections속성 제거 - fs 모듈의 recursive rmdir에 대한 deprecation warning 추가
- 빌드 옵션에서
--build-v8-with-gn제거 및 VS2017 지원 중단 - V8 JavaScript 엔진을 8.4에서 8.6으로 업그레이드
- npm 7 번들링: npm workspaces, yarn.lock 파일 지원, peer dependencies 기본 설치
- EventTarget 관련 브라우저 전역 객체 추가
- timers 모듈에서 Promise 기반 타이머 API 도입
- QUIC 프로토콜 실험적 지원 추가 (--experimental-quic 플래그)
- util 모듈의 maxStringLength 기본값을 10000으로 변경
- unhandledRejection 기본 모드를 warn에서 throw로 변경
Impact
npm 7에서 peer dependencies가 기본 설치되어 패키지 의존성 관리 동작 변경
Key Takeaway
메이저 버전 업그레이드는 장기간 deprecated된 API를 제거하고 V8 엔진 업그레이드를 통해 JavaScript 표준 기능을 확대하는 기회로 활용되어야 하며, 동시에 npm 같은 핵심 도구 업그레이드를 통해 패키지 관리 정책의 근본적 변화를 전달할 수 있다.
실천 포인트
Node.js 15 이상으로 마이그레이션하는 팀은 deprecated REPL API 제거로 인한 코드 변경(repl.memory 대신 REPL 컨텍스트 접근), peer dependencies 기본 설치로 인한 package-lock.json 파일 크기 증가, unhandledRejection 기본 동작 변경(promise rejection 미처리 시 프로세스 종료)에 대비해야 하며, timers/promises API를 활용해 async/await 기반의 타이머 구현으로 콜백 지옥을 피할 수 있다.