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 버전 업그레이드만으로도 상당한 개선을 얻을 수 있었다.