Nx 16 здесь!

Мы с гордостью объявляем о выпуске Nx версии 16! В этой статье мы рассмотрим основные обновления Nx 16 и ключевую информацию, которую вам нужно знать об изменениях, которые приносит Nx 16!

Но прежде чем мы перейдем к новым функциям Nx 16, давайте вспомним некоторые из последних функций из наших второстепенных выпусков Nx 15!

Оглавление

· Вот как выполнить обновление с помощью Nx Migrate
· Переход с @nrwl/* на @nx/*
· Автономные приложения Deno, пограничное развертывание и многое другое
· Cypress Тестирование функций
· График задач
· Репозиторий Nx переключается на PNPM для своего диспетчера пакетов
· Подробнее

Вот как выполнить обновление с помощью Nx Migrate

Как и во всех новых выпусках Nx, nx migrate можно использовать для приведения ваших пакетов Nx к соответствующей версии, а также для внесения любых необходимых изменений в вашу кодовую базу.

Чтобы обновить до Nx 16, запустите

nx migrate latest

Это обновит ваши зависимости до последней версии, а также обновит эти зависимости в корневом package.json файле.

Если доступны дальнейшие миграции, вы увидите файл migrations.json в корне вашей рабочей области. В этом файле будут описаны все дальнейшие сценарии генерации кода, которые необходимо запустить. Чтобы запустить их, используйте команду ..

nx migrate --run-migrations

… как будет предложено в терминале.

После того, как миграции будут выполнены, вы сможете увидеть их в своих инструментах управления исходным кодом. Убедитесь, что все по-прежнему работает правильно, запустив любое настроенное вами автоматическое тестирование.

Посмотрите этот реальный пример использования команды nx migrate для репозитория Tanstack/query:

Также напоминаем нашим пользователям Angular: теперь мы отделили версию Nx от версий Angular, поэтому, пока вы используете LTS-версию Angular, вы можете легко перейти на последнюю версию Nx, не касаясь вашей версии Angular! Для этого обязательно используйте параметр interactive (например, nx migrate --interactive). Посмотрите это видео для получения дополнительной информации:

Изменение области видимости с @nrwl/* на @nx/*

Одно из наиболее важных изменений по сравнению с Nx 16 заключается в том, что мы изменим область действия npm, в которой мы публикуем наши пакеты, с @nrwl на @nx. Другими словами, @nrwl/react теперь будет опубликовано как @nx/react.

Nx выполнит эту миграцию автоматически с помощью команды nx migrate для обновления ваших рабочих областей!

Чтобы убедиться, что плагины сообщества не сломаны, @nrwl/* версии этих пакетов устарели, но будут продолжать публиковаться до Nx 17, который запланирован на октябрь 2023 года.

И вы можете проверить документы для получения дополнительной информации, если хотите!

Автономные приложения Deno, периферийное развертывание и многое другое

Nx уже некоторое время поддерживает разработку бэкендов на основе Node. Это был популярный выбор для создания вашего BFF в настройке на основе монорепозитория вместе с вашим приложением React или Angular. В Nx 15.7 мы решили расширить эту поддержку и серьезно заняться улучшением общего DX.

Deno очень полюбился в этой итерации:

  • Поддержка автономных приложений — теперь вы можете создать новое рабочее пространство Deno для одного проекта с помощью Nx. Просто запустите npx create-nx-workspace --preset=@nx/deno. Вероятно, это самый быстрый способ приступить к работе с Deno.
  • Мы также добавили генераторы Nx, чтобы настроить Deno на дуб. Просто передайте опцию --framework при настройке нового приложения Deno (или используйте Консоль Nx)

В последнее время все дело в пограничных функциях (и вообще в бессерверных технологиях). Особенно при разработке с Node часто бывает, что вы хотите развернуться на Edge или в какой-либо бессерверной среде. Поэтому мы..

  • создал совершенно новый пакет @nx/netlify (в настоящее время в лабораториях), который позволяет вам настроить совершенно новый проект для разработки и внедрения функций Netlify, или вы можете добавить поддержку бессерверного развертывания в существующий проект, используя генератор @nx/netlify:setup-serverless. Ознакомьтесь с нашим подробным рецептом на тему: https://nx.dev/recipes/deployment/node-serverless-functions-netlify
  • опубликован заново @nx/aws-lambda для развертывания Лямбда-функций на AWS. Все подробности в нашем последнем рецепте: https://nx.dev/recipes/deployment/node-aws-lambda
  • Улучшен наш существующий пакет Deno, чтобы добавить поддержку бессерверного развертывания как в Deno Deploy, так и в Netlify. Такую поддержку можно добавить в существующее приложение с помощью генератора @nx/deno:setup-serverless и предоставления флага --platform, указывающего либо на deno-deploy, либо на netlify.

Тестирование функций Cypress

Nx настраивает тесты e2e для приложений, которые, как правило, собирают множество функций. Это заканчивается большим атомарным набором, который Nx не умеет отделять. С Nx 16 мы упростили распространение этих тестов ближе к реальной функции, которую они тестируют. Это значительно облегчит nx affected определение того, какие тесты действительно необходимы.

У меня также была возможность провести прямую трансляцию с собственным Калебом из Nx (который руководил большей частью разработки этой функции), а также с Джорданом Пауэллом из Cypress, который также внес свой вклад в эту работу — посмотрите это:

График задач

Nx 16.0 также представляет более полезные инструменты для визуализации вашего проекта и графа задач, как определено Nx:

График задач, в частности, полезен для визуализации того, что на самом деле выполняется при выполнении команд, а в Nx 16.0 теперь вы можете использовать параметр --graph при выполнении большинства команд Nx, чтобы визуализировать график задач, которые должны были выполняться, например:

nx build react --graph

График задач также был выделен в недавнем видео, демонстрирующем паритет функций между нашим плагином VsCode и JetBrains:

Nx Repo переключается на PNPM для своего диспетчера пакетов

Внутри репозиторий Nx переключился на использование pnpm в качестве менеджера пакетов. С момента перехода мы отметили следующие преимущества:

  • публикация в 2 раза быстрее
  • CI раз уменьшилось
  • время установки уменьшилось

Хотя мы используем pnpm в качестве нашего менеджера пакетов, мы не используем функциональность рабочих областей pnpm в репозитории Nx, но мы обнаружили, что Nx на самом деле очень хорошо работает с настройками рабочей области pnpm. Ранее Юрий выпустил статью на эту тему, и мы использовали этот подход для введения кэширования задач и распределенного кэширования (через Nx и Nx Cloud) в репозиторий Tanstack/запросов, что дало отличные результаты:

Завершение!

Это все, что касается Nx 16.0 — нам очень понравилась возможность предоставить вам все эти классные вещи, и мы очень хотим начать нашу следующую итерацию с постоянным фокусом на том, чтобы сделать Nx отличным инструментом для повышения вашей производительности. задачи управления репо выходят за рамки уравнения, поэтому вы можете сосредоточиться на доставке отличных вещей.

Узнать больше

Дополнительные примечания к выпуску Nx: