incremental QA

증분 빌드는 캐시가 보존될 때만 빨라진다

`incremental: true`를 켜도 빌드 정보 파일이 매번 사라지면 효과가 없다. cold build, warm build, CI cache restore, affected rebuild를 분리해 실제로 다시 빌드되는 범위를 확인한다.

01

cold 측정

캐시 없는 첫 빌드 시간을 기준값으로 남긴다.

02

warm 측정

작은 변경 후 재빌드 시간이 줄었는지 본다.

03

캐시 복원

CI 작업 사이에 `.tsbuildinfo`와 의존성 캐시가 남는지 확인한다.

04

영향 범위

프로젝트 레퍼런스로 바뀐 패키지와 소비자만 다시 빌드한다.

tsBuildInfoFile
"incremental": true

임시 폴더라 매번 삭제됨

워크스페이스 안의 안정 경로에 둔다.

noEmit 분리

타입 검사와 변환 시간이 분리됨

tsc가 타입 검사와 출력까지 모두 담당

typecheck, transpile, bundle을 따로 측정한다.

CI 캐시 키

lockfile, tsconfig, 소스 해시 반영

너무 넓거나 너무 좁아 매번 miss

복원 로그와 저장 로그를 같은 빌드에서 비교한다.

외부 타입

`skipLibCheck`로 node_modules 비용 절감

외부 선언까지 반복 검사

라이브러리 타입 검사는 별도 업그레이드 시점에 본다.

cold build

캐시 없이 전체 그래프를 다시 확인하는 기준 시간이다.

warm build

작은 변경 뒤 재사용되는 출력과 타입 정보를 확인한다.

affected build

참조 그래프에서 실제 영향받은 패키지만 다시 돈다.