TypeScript 4.0 도입 후 빌드 속도 개선기

문제 상황

레거시 JavaScript 프로젝트를 TypeScript 4.0으로 마이그레이션하는 작업을 진행했다. 타입 안정성은 확보했지만 빌드 시간이 기존 40초에서 1분 50초로 증가했다. 재택근무 환경에서 로컬 개발 경험이 크게 저하되어 개선이 필요했다.

원인 분석

tsc --diagnostics 옵션으로 확인한 결과, 전체 파일을 매번 재검사하는 것이 주요 원인이었다. 특히 node_modules 내 타입 정의 파일까지 반복 검사하고 있었다.

해결 방법

1. 증분 빌드 활성화

{
  "compilerOptions": {
    "incremental": true,
    "tsBuildInfoFile": "./.tsbuildinfo"
  }
}

이후 빌드부터 .tsbuildinfo 파일을 생성해 변경된 파일만 재컴파일한다.

2. skipLibCheck 설정

{
  "compilerOptions": {
    "skipLibCheck": true
  }
}

외부 라이브러리 타입 정의 파일 검사를 건너뛴다. 라이브러리 타입 오류는 어차피 우리가 수정할 수 없으므로 실용적인 선택이었다.

3. include/exclude 최적화

{
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts", "dist"]
}

테스트 파일과 빌드 결과물을 명시적으로 제외했다.

결과

  • 첫 빌드: 1분 50초 → 1분 20초
  • 증분 빌드: 8~12초

실질적인 개발 경험이 크게 개선되었다. TypeScript 4.0의 성능 개선 기능들을 제대로 활용하지 못했던 것이 문제였다.

추가 고려사항

프로젝트가 더 커지면 Project References를 활용한 모노레포 구조 전환도 검토할 예정이다. 지금은 단일 프로젝트 수준에서 충분히 관리 가능하다.

TypeScript 4.0 도입 후 빌드 속도 개선기