Миграция на NX 17

Aleksandr Serenko
F.A.F.N.U.R
Published in
2 min readOct 24, 2023

В данной статье расскажу, как обновиться до Nx 17 и внести изменения, которые были потеряны при переходе на новую версию.

Приведение workspace в порядок после миграции на Nx 17

Запускаем в консоли:

yarn nx migration latest

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

Установим пакеты:

yarn

Далее запустим миграции

yarn nx migrate --run-migrations

Изменения добавят @nx/eslint в конец package.json. Чтобы Nx отсортировал devDependencies, явно добавим @nx/eslint:

yarn add -D @nx/eslint

Одно из нововведений NX — это удаление npmScope из nx.json. Теперь нет namespace у вновь созданных библиотек.

Для генерации префиксов изменим свойство name в package.json:

{
"name": "@angular-samples/source",

}

Начиная с Nx 16.8, есть два способа организации структуры пакетов: as-provided и derived.

  • as-provided — новый вариант, где код будет располагаться относительно root (/your/lib). При этом, projectName теперь содержит слеш (раньше они заменялись на -).
  • derived — классический способ, который размещает все в папках apps и libs (libs/your/vendor), где в projectName нету /.

Если вы хотите продолжить использовать структуру внутри libs необходимо добавить в nx.json в генераторы, чтобы Nx не спрашивал какой вариант выбрать при создании нового пакета:

{
...
"generators": {
"@nx/angular:library": {
"projectNameAndRootFormat": "derived",

},
},
...
}

Еще одним нововведением является удаление свойства defaultCollection из nx.json.

Субъективно, считаю это плохим решением.

Это приводит к тому, что ранее можно было использовать сокращения:

yarn nx g lib your-lib

Теперь вы должны явно указывать схематику

yarn nx g @nx/angular:library your-lib

Подписывайтесь на блог, чтобы не пропустить новые статьи про Angular, и веб-разработку. Medium | Telegram| VK |Tw| Ln|Habr

--

--

Aleksandr Serenko
F.A.F.N.U.R

Senior Front-end Developer, Angular evangelist, Nx apologist, NodeJS warlock