TypeScript 빌드

프로젝트 레퍼런스 빌드 그래프

tsconfig references는 모노레포 패키지의 타입 경계와 빌드 순서를 그래프로 고정해 변경 범위만 다시 컴파일하게 만든다.

01

패키지 분리

domain, ui, app처럼 의존 방향이 보이는 단위로 tsconfig를 나눈다.

project unit
02

references 선언

상위 프로젝트가 필요한 하위 프로젝트 경로를 references에 적는다.

dependency edge
03

선언 파일 생성

composite 프로젝트는 d.ts와 tsbuildinfo를 남겨 다음 빌드 입력이 된다.

산출물
04

증분 빌드

tsc -b가 그래프를 따라 변경된 노드와 영향을 받은 노드만 다시 처리한다.

affected graph
참조 방향
app은 ui를 참조해도 ui는 app을 참조하지 않는다. 순환 참조는 빌드 순서와 타입 경계를 동시에 흐린다.
acyclic graph
declaration
패키지 외부에는 구현보다 선언 파일을 계약으로 노출한다. 내부 경로 import를 허용하면 경계가 무너진다.
public API
CI
전체 빌드와 변경 범위 빌드를 분리해 속도와 신뢰도를 같이 잡는다. 주요 브랜치는 전체 그래프, PR은 affected 그래프를 우선한다.
confidence vs speed

참조 그래프 점검

composite 참조 대상 프로젝트에 composite과 declaration 설정이 있다.
rootDir 출력 경로가 패키지 바깥 파일을 끌고 가지 않는다.
순환 패키지 간 import cycle을 별도 검사로 막는다.

tsconfig 예시

{
  "references": [
    { "path": "../domain" },
    { "path": "../ui" }
  ]
}