TypeScript 빌드

증분 빌드 캐시와 watch 흐름

증분 컴파일은 파일 변경, 의존 그래프, tsbuildinfo 캐시를 비교해 다시 검사할 타입 범위를 줄인다.

01

변경 감지

watch 모드가 수정된 파일과 import 관계를 통해 영향을 받는 프로젝트를 찾는다.

file event
02

캐시 비교

tsbuildinfo의 이전 graph signature와 현재 소스 signature를 비교한다.

signature
03

부분 검사

변경된 타입이 외부 선언에 영향을 주지 않으면 하위 범위에서 멈춘다.

narrow
04

출력 갱신

d.ts와 js 산출물을 업데이트하고 다음 watch cycle의 기준으로 저장한다.

next baseline
빠른 피드백
개발 중에는 watch와 incremental을 켜 타입 오류를 초기에 본다. 전체 빌드는 릴리스 신뢰도를 위해 별도 기준에 둔다.
개발 루프
캐시 무효화
tsconfig, lockfile, path alias 변화는 캐시를 새로 만든다. 오래된 캐시는 이상한 타입 오류보다 조용한 누락이 더 위험하다.
cache key
출력 위치
outDir과 declarationDir을 분리하면 산출물 추적이 쉬워진다. 소스 폴더 안 산출물은 watch 루프를 오염시킬 수 있다.
clean output

증분 빌드 확인 지점

tsbuildinfo 캐시 파일 위치가 패키지별로 충돌하지 않는다.
clean build 캐시 삭제 후 전체 빌드가 같은 결과를 낸다.
watch 로그 변경 파일과 다시 검사된 프로젝트가 예상 범위 안에 있다.

빌드 명령

tsc -b --verbose
tsc -b --watch --preserveWatchOutput