π Cherry-Picked Nx v18.2 Updates
Exploring My Selected Features from Nx Releases
[Angular] Support Angular 17.3
As usual, Nx is up to date with the latest version of Angular!
[Core] Scope Nx Plugin Project Crystal πππ
In my previous article, ββ Target Exclusions in Nx Project Crystal,β I introduced alternatives for excluding certain projects from specific plugins.
For instance, you might not want a test
target in an e2e
project simply because thereβs a jest.config.ts
file present.
Now, an official method is available for excluding or including plugins for a specific project. Within your nx.json
file, you can now specify the exclude
or include
options:
{
"plugins": [
{
"plugin": "@nx/jest/plugin",
"options": {
"targetName": "test",
"exclude": ["my-lib-e2e/**/*"]
}
}
]
}
[Gradle] New Gradle Integration
You can now leverage the new Gradle integration with the @nx/gradle:init
generator. To initialize, simply run:
nx g @nx/gradle:init
This initialization will also add the @nx/gradle/plugin
to your nx.json
:
{
"plugins": [
{
"plugin": "@nx/gradle/plugin",
"options": {
"testTargetName": "build",
"classesTargetName": "test",
"buildTargetName": "classes"
}
}
]
}
This plugin will:
Integrate your Gradle projects into the Nx Dependency Tree by scanning all Gradle configurations.
Discover your projects by scanning the Gradle configuration matching the pattern
**/build.{gradle.kts,gradle}
, and then assign the targetsbuild
,test
, andclasses
.
[Cypress] New targetopen-cypress
is added by the @nx/cypress/plugin
If youβre working with Nx Project Crystal and have a Cypress project that includes a cypress.config.*
file, the @nx/cypress/plugin
will automatically add related targets to your project.
A new target, open-cypress
, will now be added to your project configuration:
"open-cypress": {
"command": "cypress open",
"options": {
"cwd": ".",
},
You have the flexibility to use a different name by specifying the new plugin option openTargetName
:
{
"plugins": [
{
"plugin": "@nx/cypress/plugin",
"options": {
"targetName": "e2e",
"ciTargetName": "e2e-ci",
"componentTestingTargetName": "component-test",
"openTargetName": "open-cypress" // <-- NEW
}
}
]
}