Docker 빌드 시 tsc -p vs tsc -b 혼용, tsbuildinfo 미제외로 발생한 TS6305 에러 패턴 및 해결책
## 증상
Docker 빌드 시 `TS6305: Output file '/app/packages/xxx/dist/index.d.ts' has not been built from source file` 에러.
패키지 빌드 단계는 exit 0이지만 dist가 생성되지 않음.
## 원인 1 — tsc -p vs tsc -b 혼용
`tsconfig.json`에 `references`가 있는 프로젝트는 `tsc -b`(build mode)로 빌드해야 한다.
- `tsc -p`: 단일 프로젝트만 컴파일, references 무시, `.tsbuildinfo` 미생성
- `tsc -b`: references를 따라 의존 프로젝트 포함 빌드, `.tsbuildinfo` 생성
`composite: true`인 패키지를 `tsc -p`로 빌드하면 `.tsbuildinfo`가 생성되지 않아,
이를 참조하는 앱이 `tsc -b`로 빌드할 때 "패키지가 올바르게 빌드되지 않았다"고 판단해 TS6305 발생.
**해결:** 모든 패키지/앱의 build 스크립트를 `tsc -p tsconfig.json` → `tsc -b tsconfig.json`으로 통일.
## 원인 2 — .dockerignore에 tsbuildinfo 미제외
로컬에서 빌드한 `tsconfig.tsbuildinfo`가 Docker 컨텍스트에 포함되면,
Docker 내부에서 `tsc -b`가 "already up to date"로 판단하고 dist 생성을 건너뜀.
`.dockerignore`에 `**/dist`만 있고 `**/*.tsbuildinfo`가 없으면 이 문제가 발생.
**해결:** `.dockerignore`에 `**/*.tsbuildinfo` 추가.
## How to apply
- 새 패키지/앱 추가 시 build 스크립트는 `tsc -b` 사용
- `.dockerignore`에 `**/*.tsbuildinfo` 포함 여부 확인