패스잇
프론트엔드 개발 · 심화

대규모 모노레포 환경에서 TypeScript 프로젝트를 관리할 때, 빌드 성능을 최적화하고 타입 의존성을 효율적으로 관리하기 위한 `tsconfig.json` 설정 전략에 대해 설명해주세요. 특히 `project references`의 도입 배경, 동작 방식, 그리고 이를 활용하여 얻을 수 있는 이점을 구체적인 예시와 함께 설명해주세요.

힌트 · `composite`, `declarationMap`, `incremental` 등의 `tsconfig` 옵션과 `references` 배열을 사용하여 다중 프로젝트 간의 의존성을 명시하고 증분 빌드를 활성화할 수 있습니다. 이를 통해 빌드 시간 단축과 타입 검사의 효율성을 높일 수 있습니다.

모노레포tsconfig.jsonProject ReferencesIncremental Build타입 의존성

모범답안

모노레포 환경에서 TypeScript 프로젝트 빌드 성능 최적화는 중요한 과제입니다. tsconfig.json 설정을 통해 이를 효과적으로 관리할 수 있습니다.

핵심은 project references를 활용하는 것입니다. 이는 프로젝트 간 의존성을 명시적으로 선언하는 기능입니다. composite 옵션을 활성화하고, references 배열에 의존하는 프로젝트의 경로를 지정합니다.

예를 들어, ui-librarycore 라이브러리에 의존한다면, ui-librarytsconfig.jsoncore를 참조하도록 설정합니다.

{
  "compilerOptions": {
    "composite": true
  },
  "references": [{ "path": "../core" }]
}

이렇게 하면 TypeScript 컴파일러는 의존성 그래프를 이해하고, 변경된 부분만 증분 빌드하여 전체 빌드 시간을 단축할 수 있습니다. 또한, 타입 정보(.d.ts)를 공유하여 타입 검사 속도도 향상됩니다. declarationMap 옵션을 함께 사용하면 디버깅 경험도 개선할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 TypeScript 면접 질문

← TypeScript 면접 질문 전체 보기