피드로 돌아가기
Node.js 22.8.0 (Current)
Node.js BlogNode.js Blog
Backend

Node.js 22.8.0이 module.enableCompileCache() API와 테스트 커버리지 임계값 검증 기능을 추가해 온디스크 코드 캐싱과 품질 게이트 자동화 지원

Node.js 22.8.0 (Current)

2024년 9월 3일5intermediate

Context

기존에는 온디스크 코드 캐싱이 NODE_COMPILE_CACHE 환경 변수로만 활성화 가능했으므로 최종 사용자만 설정할 수 있었다. 라이브러리와 도구 개발자는 자체 코드의 캐싱을 제어할 방법이 없었으며, 기존 v8-compile-cache 패키지는 ESM을 지원하지 않았다.

Technical Solution

  • module.enableCompileCache() API 도입: 호출 이후 로드되는 모든 모듈에 대해 온디스크 코드 캐싱을 프로그래매틱하게 활성화하도록 변경
  • ESM 완전 지원: v8-compile-cache 패키지의 한계를 극복하고 CommonJS와 ESM 모두에서 캐싱 동작
  • 테스트 커버리지 임계값 검증 기능: --experimental-test-coverage 플래그와 함께 --test-coverage-lines, --test-coverage-branches, --test-coverage-functions 옵션으로 0~100 범위의 정수 임계값 설정
  • 임계값 미달 시 자동 종료: 지정된 커버리지 카테고리 중 하나라도 임계값 미만이면 프로세스 종료 코드 1로 반환
  • vm.constants.DONT_CONTEXTIFY 옵션 추가: vm.createContext() 호출 시 전역 객체의 컨텍스트화를 생략하여 컨텍스트 동결이나 전역 접근 속도 향상 가능

Key Takeaway

Node.js가 빌트인 API를 통해 외부 패키지 의존성을 줄이고 ESM 지원을 강화하는 동시에, 테스트 커버리지 강제 검증으로 CI/CD 파이프라인의 품질 게이트 자동화를 단순화했다.


Node.js 라이브러리 및 도구 개발자는 module.enableCompileCache()를 초기화 단계에서 호출하여 사용자의 환경 변수 설정에 의존하지 않고도 코드 캐싱을 활성화할 수 있다. CI/CD 환경에서 --test-coverage-lines=80 --test-coverage-branches=60 같은 옵션을 테스트 스크립트에 추가하면 커버리지 임계값 미달 시 빌드를 자동으로 실패 처리하여 품질 기준 준수를 강제할 수 있다.

원문 읽기