0Pricing
React Academy · Урок

Команды Nx Affected и кэширование

Запускайте только тесты и сборки, затронутые изменением, и ускоряйте CI с помощью распределённого кэширования Nx Cloud.

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

Концепция затронутых проектов

Nx отслеживает граф зависимостей вашего монорепозитория. Когда вы изменяете файл, Nx вычисляет, какие проекты затронуты (изменены напрямую или зависят от изменённых проектов), и запускает задачи только для них.

Запуск тестов для затронутых проектов

Запускайте тесты только для проектов, затронутых изменениями после основной ветки.

# Compare to main branch:
npx nx affected --target=test --base=origin/main --head=HEAD

# Shorthand (uses nx.json defaultBase):
npx nx affected --target=test

Запуск сборок для затронутых проектов

Собирайте только затронутые проекты — это необходимо для CI, чтобы не пересобирать весь монорепозиторий при каждом PR.

npx nx affected --target=build

# With parallel workers:
npx nx affected --target=build --parallel=3

Проверка стиля и сквозные тесты для затронутых проектов

Применяйте тот же подход к проверке стиля и сквозным тестам.

npx nx affected --target=lint
npx nx affected --target=e2e

Как Nx определяет затронутые проекты

Nx вычисляет хеши всех исходных файлов, файлов package.json и файлов конфигурации. Проект считается затронутым, если изменился любой его собственный файл или любой проект, из которого он импортирует код.

Локальный кэш вычислений

Nx кэширует результаты задач (артефакты сборки, результаты тестов) в .nx/cache. При запуске той же задачи с неизменившимися входными данными результат мгновенно восстанавливается из кэша — воспроизводится даже вывод, включая журналы терминала.

# First run (builds):
$ npx nx build web  → Builds in 28s, cached

# Second run (no changes):
$ npx nx build web  → Cache hit! [existing outputs match] 0ms

# Clear cache if needed:
$ npx nx reset

Удалённый кэш Nx Cloud

Nx Cloud делится кэшем между членами команды и CI. Если коллега уже собрал проект с теми же входными данными, ваш CI использует удалённый кэш вместо повторной сборки — даже на новом компьютере.

# Connect workspace to Nx Cloud:
npx nx connect-to-nx-cloud

# Set CI environment variable:
# NX_CLOUD_ACCESS_TOKEN=<token>

Настройка входных данных кэша

Настройте в project.json, какие файлы являются входными данными кэша для цели. Исключите файлы, не влияющие на результат сборки (например, README и тестовые фикстуры), чтобы увеличить число попаданий в кэш.

// project.json
{
  "targets": {
    "build": {
      "inputs": [
        "default",  // source files
        "^default"  // upstream dependency source files
      ],
      "outputs": ["{workspaceRoot}/dist/apps/web"]
    }
  }
}

Распределение задач (агенты Nx)

Агенты Nx Cloud распределяют затронутые задачи между несколькими машинами CI параллельно, значительно сокращая фактическое время работы CI в больших монорепозиториях.

Расширение Nx Console для VS Code

Расширение Nx Console предоставляет графический интерфейс для запуска команд Nx, визуализации графа проектов и генерации кода — без необходимости запоминать флаги CLI.

Визуализация графа задач

nx graph --task=build показывает граф зависимостей задач, включая сведения о том, какие задачи зависят от других задач, — это помогает понять порядок сборки.

npx nx graph --task=build

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

От чего зависит попадание задачи Nx в кэш?

Итоги

nx affected --target=X запускает задачи только для изменённых проектов и проектов, зависящих от них. Nx кэширует результаты, вычисляя хеши входных данных, и мгновенно воспроизводит их. Nx Cloud расширяет эту возможность общим удалённым кэшем для нескольких машин. Используйте --parallel=N, чтобы запускать задачи одновременно и ускорить CI.

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

Урок «Команды Nx Affected и кэширование» бесплатный?

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

Чему я научусь в уроке «Команды Nx Affected и кэширование»?

Запускайте только тесты и сборки, затронутые изменением, и ускоряйте CI с помощью распределённого кэширования Nx Cloud. Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

Сколько времени занимает урок «Команды Nx Affected и кэширование»?

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

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

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

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

  1. Создание монорепозитория Nx с приложениями React
  2. Общие библиотеки и внутренние пакеты
  3. Команды Nx Affected и кэширование
  4. Генераторы кода и автоматизация рабочей области
← Назад к React Academy