피드로 돌아가기
The Unexpected optimization in ESLint vs Vitest: A Head-to-Head
Dev.toDev.to
Frontend

Vitest 병렬 처리 도입으로 10k LOC 기준 Cold Start 속도 47% 개선

The Unexpected optimization in ESLint vs Vitest: A Head-to-Head

ANKUSH CHOUDHARY JOHAL2026년 5월 8일23intermediate

Context

ESLint 8.x의 순차적 Rule 실행 구조와 레거시 설정 파일 조회로 인한 성능 병목 발생. 특히 대규모 TypeScript 코드베이스의 Cold Start 시 불필요한 파일 시스템 룩업과 설정 캐시 오버헤드로 인한 CI 리소스 낭비 확인.

Technical Solution

  • Native Parallel Thread Execution 기반의 다중 코어 활용을 통한 Rule 체크 속도 최적화
  • ESM Config 전용 구조 채택을 통한 Legacy JSON/YAML 설정 조회 오버헤드 제거
  • Batch Execution 최적화 설계를 통한 전체 코드베이스 스캔 효율 극대화
  • rule-timing, eslintrc lookup 등 내부 메트릭용 Undocumented Flag 제거를 통한 런타임 경량화
  • TypeScript Compiler API를 활용한 ESLint Rule 로직의 Vitest Inline Test 전환 설계
  • PR 단위의 소규모 변경분은 ESLint Incremental Cache를, 전체 스캔은 Vitest를 사용하는 하이브리드 워크플로우 구축

- 전체 코드베이스 최적화 스캔 시 Vitest의 --threads 옵션 활용 검토 - ESLint 사용 시 root: true 설정 및 불필요한 내부 플래그 비활성화로 Cold Start 최적화 - 변경 범위가 작은 PR 린팅은 ESLint의 Incremental Cache 기능을 유지 - 번들 사이즈 최적화 등 고비용 정적 분석 Rule의 Vitest 이관 가능성 검토

원문 읽기