0Pricing
TypeScript Academy · 강의

모노레포의 증분 빌드 및 캐시

증분 컴파일과 Turborepo로 빌드 시간을 최적화합니다.

모노레포의 증분 빌드 및 캐시은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

증분 빌드가 중요한 이유

대규모 모노레포에서는 변경될 때마다 모든 패키지를 다시 빌드하면 느립니다. 증분 빌드는 변경된 항목을 감지하고 영향을 받은 패키지만 다시 컴파일합니다.

# Without incremental: all 20 packages rebuild every time
# With incremental: only 2 changed packages rebuild

TypeScript 증분 모드

tsconfig에서 "incremental": true를 활성화하면 이전 빌드 상태를 캐시하는 .tsbuildinfo 파일이 생성되어 재실행 속도가 빨라집니다.

{
  "compilerOptions": {
    "incremental": true,
    "tsBuildInfoFile": "./.tsbuildinfo"
  }
}

프로젝트 참조를 위한 tsc --build

tsc --build는 프로젝트 참조 워크스페이스에서 본질적으로 증분 방식으로 동작합니다. 타임스탬프를 추적하고 최신 상태인 패키지는 건너뜁니다.

# First build: all packages compiled
tsc --build
# Second build: only changed packages compiled
tsc --build
# [12:00:01 PM] Project 'packages/core' is up to date

Turborepo 캐싱

Turborepo는 작업 출력(예: dist/)을 캐시하고 변경되지 않은 입력에 대해서는 캐시에서 복원합니다. 원격 캐시를 통해 팀 전체에서 공유할 수도 있습니다.

// turbo.json
{
  "pipeline": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**", ".tsbuildinfo"]
    }
  }
}

Turborepo를 사용한 원격 캐싱

CI 컴퓨터와 팀 구성원 간에 빌드 캐시를 공유하여 다른 사람이 이미 빌드한 항목을 다시 빌드하지 않도록 하십시오.

# Link to Vercel remote cache
npx turbo login
npx turbo link

Nx 계산 캐시

Nx는 프로젝트 의존성 그래프를 기반으로 세밀하게 영향을 받은 항목을 분석하여 이와 유사한 캐싱을 제공합니다.

# Nx: only test affected projects
npx nx affected --target=test --base=main

캐시 입력 및 출력

올바른 캐싱을 위해 빌드 도구 구성에 모든 입력(소스 파일, 환경 변수)과 출력(dist 디렉터리, tsbuildinfo)을 선언하십시오.

// turbo.json with inputs
{
  "pipeline": {
    "build": {
      "inputs": ["src/**", "tsconfig.json"],
      "outputs": ["dist/**"]
    }
  }
}

캐시 무효화

입력이 변경되면 캐시가 무효화됩니다. 불필요한 재빌드를 방지하려면 로그나 타임스탬프처럼 자주 변하는 파일을 입력에 포함하지 마십시오.

# Force rebuild even if cached
turbo run build --force

CI 통합

CI(GitHub Actions, CircleCI)를 원격 캐시에 연결하여 이전 빌드 산출물을 재사용하고 PR 빌드를 빠르게 수행하십시오.

# .github/workflows/ci.yml
- name: Build
  run: npx turbo build
  env:
    TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
    TURBO_TEAM: my-team

증분 타입 검사만 수행하기

tsc --noEmit --incremental을 사용하면 출력을 건너뛰면서도 캐싱의 이점을 얻는 빠른 타입 검사 전용 CI 단계를 구성할 수 있습니다.

npx tsc --noEmit --incremental
# Quick type check with .tsbuildinfo cache

복습: 증분 빌드

모노레포의 증분 빌드는 TypeScript의 tsBuildInfo와 tsc --build를 Turborepo 또는 Nx 캐싱과 함께 사용하여 변경될 때마다 필요한 컴파일 작업을 최소화합니다.

빠른 확인

증분 빌드를 활성화하기 위해 TypeScript가 생성하는 파일은 무엇입니까?

학습 내용

증분 빌드는 TypeScript의 .tsbuildinfo 파일과 tsc --build를 사용하여 변경되지 않은 패키지를 건너뜁니다. Turborepo와 Nx는 전체 모노레포에서 원격 캐싱과 영향받은 항목만 분석하는 기능으로 이를 확장합니다.

자주 묻는 질문

“모노레포의 증분 빌드 및 캐시” 강의는 무료인가요?

네 — “모노레포의 증분 빌드 및 캐시” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“모노레포의 증분 빌드 및 캐시”에서 뭘 배우나요?

증분 컴파일과 Turborepo로 빌드 시간을 최적화합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“모노레포의 증분 빌드 및 캐시” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. TypeScript 프로젝트 참조 이해하기
  2. TypeScript와 함께 사용하는 pnpm 작업 공간
  3. 공유 형식 패키지 전략
  4. 모노레포의 증분 빌드 및 캐시
← TypeScript Academy(으)로 돌아가기