πŸ’ Cherry-Picked Nx v18.2 Updates

πŸ’ Cherry-Picked Nx v18.2 Updates

Exploring My Selected Features from Nx Releases

Β·

2 min read

Release Note 18.2 (2024–03–28)

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

[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/pluginwill 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
      }
    }
  ]
}

Looking for some help?🀝
Connect with me on
Twitterβ€’LinkedInβ€’Github

Β