π Cherry-Picked Nx v19 Updates
Exploring My Selected Features from Nx Releases
[π Nx Core]
Metadata Property in Project Configuration
Already covered in my previous blog post on v18.3, Nx introduced a new metadata
property in the project.json
:
{
"name": "my-java-project",
"metadata": {
"technologies": ["java17"],
"ciRunner": "ubuntu-20.04-m6a.large",
"owners": ["backend-team"]
},
...
}
In Nx v19, youβll be able to generate these metadata directly from your plugins:
export const createMetadata: CreateMetadata = (graph) => {
const metadata: ProjectsMetadata = {};
metadata['my-java-project'] = {
metadata: {
technologies: ['java17'],
ciRunner: 'ubuntu-20.04-m6a.large',
owners: ['backend-team']
}
}
return metadata;
}
This opens many possibilities for project customization like listing technologies or the runner you want to use on your CI.
It also helps define a project type described in my article π₯ Reproducible Nx Workspace with HugeNxβs Conventions.
Change imports for the Webpack plugin
It is always a better idea not to expose all utilities in the same index.ts
especially when they are not related. It has an impact on the config loading for example.
Here is a good decision from Nx related to Webpack configurations:
Before
const { NxAppWebpackPlugin } = require('@nx/webpack');
const { NxReactWebpackPlugin } = require('@nx/react');
After
const { NxAppWebpackPlugin } = require('@nx/webpack/app-plugin');
const { NxReactWebpackPlugin } = require('@nx/react/webpack-plugin');
Global forwardAllArgs for nx:run-commands
Before, when you had multiple commands in your nx:run-commands
executor, you had to specify for each command if you wanted or not to forward arguments:
"configure-branch-environment": {
"executor": "nx:run-commands",
"options": {
"commands": [
{
"command": "echo \"BRANCH=$(git branch --show-current)\" > .local.env",
"forwardAllArgs": false
},
{
"command": "echo \"COMMIT_SHA=$(git rev-parse HEAD)\" >> .local.env",
"forwardAllArgs": false
},
{
"command": "ls",
"forwardAllArgs": false
},
{
"command": "cat .local.env",
"forwardAllArgs": false
}
],
"cwd": "{projectRoot}"
}
},
Now you can specify it globally:
"configure-branch-environment": {
"executor": "nx:run-commands",
"options": {
"commands": [
"echo \"BRANCH=$(git branch --show-current)\" > .local.env",
"echo \"COMMIT_SHA=$(git rev-parse HEAD)\" >> .local.env",
"ls",
"cat .local.env"
],
"cwd": "{projectRoot}",
"forwardAllArgs": false
},
},
[π Project Crystal]
Add generators to convert projects to inferred targets
https://nx.dev/nx-api/cypress/generators/convert-to-inferred
https://nx.dev/nx-api/playwright/generators/convert-to-inferred
[π« Upgrades]
Support React 18.3
[π nx.dev]
Main Navigation Menu
New Blog Page
New Enterprise Page
[βοΈ Nx Cloud]
DTE v2
https://nx.dev/ci/reference/release-notes#dte-algorithm-v2-experimental-flag
NX_CLOUD_DTE_V2: 'true'