Миграция на NX 17
В данной статье расскажу, как обновиться до 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