Команды 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 — локальная установка не требуется.
Все уроки этого курса
- Создание монорепозитория Nx с приложениями React
- Общие библиотеки и внутренние пакеты
- Команды Nx Affected и кэширование
- Генераторы кода и автоматизация рабочей области