0Pricing
TypeScript Academy · レッスン

MonorepoのIncremental BuildとCache

incrementalコンパイルとTurborepoでビルド時間を最適化します。

「MonorepoのIncremental BuildとCache」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応の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 は、モノレポ全体でのリモートキャッシュと影響範囲だけを対象にした分析によって、この仕組みを拡張します。

よくある質問

「MonorepoのIncremental BuildとCache」レッスンは無料ですか?

はい。「MonorepoのIncremental BuildとCache」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「MonorepoのIncremental BuildとCache」で何を学びますか?

incrementalコンパイルとTurborepoでビルド時間を最適化します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「MonorepoのIncremental BuildとCache」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. TypeScriptプロジェクト参照の解説
  2. TypeScriptでのpnpm Workspaces
  3. 共有型パッケージの戦略
  4. MonorepoのIncremental BuildとCache
← TypeScript Academyに戻る