TypeScript 3.9 업그레이드 후 빌드 속도 개선

배경

팀 프로젝트가 TypeScript 3.7을 사용 중이었는데, 파일 수가 늘어나면서 빌드 시간이 점점 길어졌다. 로컬에서 tsc 실행 시 40초 가까이 걸리는 상황이었고, CI에서는 더 오래 걸렸다.

TypeScript 3.9가 5월에 릴리즈되면서 빌드 성능 개선이 주요 변경사항으로 언급되어 업그레이드를 결정했다.

적용 내용

1. TypeScript 업그레이드

npm install [email protected] --save-dev

2. tsconfig.json 최적화

{
  "compilerOptions": {
    "incremental": true,
    "skipLibCheck": true,
    "composite": false
  },
  "exclude": [
    "node_modules",
    "dist",
    "**/*.spec.ts"
  ]
}

skipLibCheck를 추가해서 node_modules의 타입 체크를 건너뛰도록 했다. 실제 코드에는 영향이 없고 속도 개선이 확실했다.

3. 측정 결과

  • 초기 빌드: 38초 → 26초 (약 32% 개선)
  • incremental 빌드: 12초 → 4초 (약 67% 개선)
  • CI 빌드: 2분 10초 → 1분 32초

주의사항

3.9에서 몇 가지 breaking change가 있었다. 특히 Promise.all의 타입 추론이 엄격해져서 일부 코드를 수정해야 했다.

// 기존 코드에서 에러 발생
const results = await Promise.all([
  fetchUser(),
  fetchPosts() // 여기서 타입 에러
]);

// 명시적 타입 지정으로 해결
const results = await Promise.all<[User, Post[]]>([
  fetchUser(),
  fetchPosts()
]);

결론

빌드 속도 개선은 개발 경험에 직접적인 영향을 준다. 특히 재택근무가 늘어난 시점에서 로컬 빌드 최적화가 더 중요해졌다. TypeScript 버전 업그레이드만으로도 상당한 개선을 얻을 수 있었다.

TypeScript 3.9 업그레이드 후 빌드 속도 개선