🍒 Cherry-Picked Nx v18.2 Updates

Exploring My Selected Features from Nx Releases

Jonathan Gelin
JavaScript in Plain English
3 min readApr 5, 2024

[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 targets build, test, and classes.

[Cypress] New target open-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
}
}
]
}

Published in JavaScript in Plain English

New JavaScript and Web Development content every day. Follow to join our 3.5M+ monthly readers.

Written by Jonathan Gelin

Write & Share about SDLC/Architecture in Ts/Js, Nx, Angular, DevOps, XP, Micro Frontends, NodeJs, Cypress/Playwright, Storybook, Tailwind • Based in 🇪🇺

No responses yet

What are your thoughts?