0Pricing
TypeScript Academy · Урок

Инкрементальные сборки и кэш в монорепозиториях

Оптимизируйте время сборки с помощью инкрементальной компиляции и Turborepo

«Инкрементальные сборки и кэш в монорепозиториях» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Зачем нужны инкрементальные сборки

В больших монорепозиториях медленно пересобирать каждый пакет после каждого изменения. Инкрементальные сборки определяют, что изменилось, и перекомпилируют только затронутые пакеты.

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

Инкрементальный режим TypeScript

Включите "incremental": true в tsconfig, чтобы создать файл .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

Итоги: инкрементальные сборки

Инкрементальные сборки в монорепозиториях используют tsBuildInfo TypeScript и tsc --build вместе с кэшированием Turborepo или Nx, чтобы минимизировать объём компиляции при каждом изменении.

Быстрая проверка

Какой файл создаёт TypeScript для включения инкрементальных сборок?

Чему Вы научились

Инкрементальные сборки используют файл TypeScript .tsbuildinfo и tsc --build, чтобы пропускать неизменившиеся пакеты. Turborepo и Nx расширяют этот подход удалённым кэшированием и анализом только затронутых компонентов во всём монорепозитории.

Часто задаваемые вопросы

Урок «Инкрементальные сборки и кэш в монорепозиториях» бесплатный?

Да — полный текст урока «Инкрементальные сборки и кэш в монорепозиториях» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Инкрементальные сборки и кэш в монорепозиториях»?

Оптимизируйте время сборки с помощью инкрементальной компиляции и Turborepo Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Инкрементальные сборки и кэш в монорепозиториях»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Объяснение ссылок на проекты TypeScript
  2. Рабочие пространства pnpm с TypeScript
  3. Стратегия общего пакета типов
  4. Инкрементальные сборки и кэш в монорепозиториях
← Назад к TypeScript Academy