The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It also enables using Angular Devkit builders and schematics in Nx workspaces.
Among other things, it provides:
Integration with libraries such as:
Cypress
ESLint
Jest
Playwright
Storybook
Generators to help scaffold code quickly, including:
Micro Frontends
Libraries, both internal to your codebase and publishable to npm
Projects with Tailwind CSS
Executors providing extra capabilities on top of the Angular Devkit builders:
Provide ESBuild plugins
Provide custom webpack configurations
Utilities for automatic workspace refactoring
Currently using the Angular CLI?
You can easily and mostly automatically migrate from an Angular CLI project to Nx! Learn more here.
Setting Up @nx/angular
Installation
Keep Nx Package Versions In Sync
Make sure to install the @nx/angular version that matches the version of nx in your repository. If the version numbers get out of sync, you can encounter some difficult to debug errors. You can fix Nx version mismatches with this recipe.
In any Nx workspace, you can install @nx/angular by running the following command:
โฏ
nx add @nx/angular
This will install the correct version of @nx/angular.
If you try to invoke a generator that is not present in @nx/angular, the request will automatically be forwarded on to @schematics/angular. So, even though there is no @nx/angular:service generator, the following command will successfully create a service:
โฏ
nx g @nx/angular:service apps/appName/src/lib/my-service/my-service
Builds an Angular library with support for incremental builds.
This executor is meant to be used with buildable libraries in an incremental build scenario. It is similar to the @nx/angular:package executor but it only produces ESM2022 bundles.
Builds and packages an Angular library producing an output following the Angular Package Format (APF) to be distributed as an NPM package.
This executor is a drop-in replacement for the @angular-devkit/build-angular:ng-packagr and @angular/build:ng-packagr builders, with additional support for incremental builds.
The module-federation-ssr-dev-server executor is reserved exclusively for use with host SSR Module Federation applications. It allows the user to specify which remote applications should be served with the host.
Serves an Angular application using webpack when the build target is using a webpack-based executor, or Vite when the build target uses an esbuild-based executor.
Builds a server Angular application using webpack. This executor is a drop-in replacement for the @angular-devkit/build-angular:server builder provided by the Angular CLI. It is usually used in tandem with the @nx/angular:webpack-browser executor when your Angular application uses a custom webpack configuration.
If workspace includes Module Federation projects, ensure the new @nx/module-federation package is installed.
Version: 20.3.0-beta.2
Ensure the @nx/module-federation Package is Installed
If workspace includes Module Federation projects, ensure the new @nx/module-federation package is installed.
Sample Code Changes
package.json
1{
2"dependencies": {}
3}
4
20.2.3-ngrx-package-updates
Version: 20.3.0-beta.2
Requires
Name
Version
@angular/core
^19.0.0
Packages
Name
Version
Always Add to package.json
@ngrx/store
^19.0.0
Update only
20.2.x
20.2.2-angular-eslint-package-updates
Version: 20.2.2-beta.0
Requires
Name
Version
eslint
^8.57.0 || ^9.0.0
@angular/core
>= 19.0.0 < 20.0.0
Packages
Name
Version
Always Add to package.json
angular-eslint
^19.0.2
Update only
@angular-eslint/eslint-plugin
^19.0.2
Update only
@angular-eslint/eslint-plugin-template
^19.0.2
Update only
@angular-eslint/template-parser
^19.0.2
Update only
@angular-eslint/utils
^19.0.2
Update only
@angular-eslint/schematics
^19.0.2
Update only
@angular-eslint/test-utils
^19.0.2
Update only
@angular-eslint/builder
^19.0.2
Update only
@angular-eslint/bundled-angular-compiler
^19.0.2
Update only
remove-angular-eslint-rules
Remove Angular ESLint rules that were removed in v19.0.0.
Version: 20.2.0-beta.8
Requires
Name
Version
@angular/core
>=19.0.0
Remove Angular ESLint Rules
Remove Angular ESLint rules that were removed in v19.0.0.
Sample Code Changes
Removes @angular-eslint/no-host-metadata-property, @angular-eslint/sort-ngmodule-metadata-arrays and @angular-eslint/prefer-standalone-component from any ESLint config file. Files to be searched include .eslintrc.json, .eslintrc.base.json, .eslint.config.js and .eslint.config.base.js.
Remove the deprecated 'tailwindConfig' option from ng-packagr executors. Tailwind CSS configurations located at the project or workspace root will be picked up automatically.
Version: 20.2.0-beta.8
Requires
Name
Version
@angular/core
>=19.0.0
Remove tailwindConfig from ng-packagr Executors
Remove the deprecated 'tailwindConfig' option from ng-packagr executors. Tailwind CSS configurations located at the project or workspace root will be picked up automatically.
Sample Code Changes
Remove tailwindConfig from the @nx/angular:ng-packagr-lite or @nx/angular:package executor options in project configuration.
import { addProjectConfiguration, writeJson, type ProjectConfiguration, type ProjectGraph, type Tree, } from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; import migration from './disable-angular-eslint-prefer-standalone';
it('should not disable @angular-eslint/prefer-standalone when there are multiple overrides for angular eslint and the rule is set in one of them', async () => { writeJson(tree, 'apps/app1/.eslintrc.json', { overrides: [ { files: ['.ts'], rules: { '@angular-eslint/directive-selector': [ 'error', { type: 'attribute', prefix: 'app', style: 'camelCase' }, ], }, }, { files: ['.ts'], rules: { '@angular-eslint/prefer-standalone': ['error'] }, }, ], });
Ensure Target Defaults are set correctly for Module Federation.
Version: 19.6.1-beta.0
19.6.1-ngrx-package-updates
Version: 19.6.1-beta.0
Requires
Name
Version
@angular/core
^18.0.0
Packages
Name
Version
Always Add to package.json
@ngrx/store
^18.0.2
Update only
update-angular-cli-version-18-2-0
Update the @angular/cli package version to ~18.2.0.
Version: 19.6.0-beta.7
Requires
Name
Version
@angular/core
>=18.2.0
19.6.0-package-updates
Version: 19.6.0-beta.7
Requires
Name
Version
@angular/core
>=18.1.0 <18.2.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/build-angular
~18.2.0
Update only
@angular-devkit/core
~18.2.0
Update only
@angular-devkit/schematics
~18.2.0
Update only
@angular/build
~18.2.0
Update only
@angular/pwa
~18.2.0
Update only
@angular/ssr
~18.2.0
Update only
@schematics/angular
~18.2.0
Update only
@angular-devkit/architect
~0.1802.0
Update only
@angular-devkit/build-webpack
~0.1802.0
Update only
@angular/core
~18.2.0
Add if not installed
@angular/material
~18.2.0
Update only
@angular/cdk
~18.2.0
Update only
ng-packagr
~18.2.0
Update only
zone.js
~0.14.10
Update only
update-19-6-0
Ensure Module Federation DTS is turned off by default.
Version: 19.6.0-beta.4
19.5.x
19.5.4-ngrx-package-updates
Version: 19.5.4-beta.0
Requires
Name
Version
@angular/core
^18.0.0
Packages
Name
Version
Always Add to package.json
@ngrx/store
^18.0.1
Update only
@ngrx/operators
^18.0.1
Update only
update-angular-cli-version-18-1-0
Update the @angular/cli package version to ~18.1.0.
Version: 19.5.0-beta.1
Requires
Name
Version
@angular/core
>=18.1.0
19.5.0-package-updates
Version: 19.5.0-beta.1
Requires
Name
Version
@angular/core
>=18.0.0 <18.1.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/build-angular
~18.1.0
Update only
@angular-devkit/core
~18.1.0
Update only
@angular-devkit/schematics
~18.1.0
Update only
@angular/build
~18.1.0
Update only
@angular/pwa
~18.1.0
Update only
@angular/ssr
~18.1.0
Update only
@schematics/angular
~18.1.0
Update only
@angular-devkit/architect
~0.1801.0
Update only
@angular-devkit/build-webpack
~0.1801.0
Update only
@angular/core
~18.1.0
Add if not installed
@angular/material
~18.1.0
Update only
@angular/cdk
~18.1.0
Update only
ng-packagr
~18.1.0
Update only
19.5.0-module-federation-package-updates
Version: 19.5.0-beta.0
Packages
Name
Version
Always Add to package.json
@module-federation/node
^2.3.0
Update only
19.4.x
19.4.0-ngrx-package-updates
Version: 19.4.0-beta.1
Requires
Name
Version
@angular/core
^18.0.0
Packages
Name
Version
Always Add to package.json
@ngrx/store
^18.0.0
Update only
19.2.x
add-typescript-eslint-utils
Installs the '@typescript-eslint/utils' package when having installed '@angular-eslint/eslint-plugin' or '@angular-eslint/eslint-plugin-template' with version >=18.0.0.
Version: 19.2.1-beta.0
Requires
Name
Version
@angular-eslint/eslint-plugin
>=18.0.0
19.1.x
19.1.2-package-updates
Version: 19.1.2-beta.1
Requires
Name
Version
eslint
^8.57.0 || ^9.0.0
@angular/core
>= 18.0.0 < 19.0.0
Packages
Name
Version
Always Add to package.json
@angular-eslint/eslint-plugin
^18.0.1
Update only
@angular-eslint/eslint-plugin-template
^18.0.1
Update only
@angular-eslint/template-parser
^18.0.1
Update only
@angular-eslint/utils
^18.0.1
Update only
@angular-eslint/schematics
^18.0.1
Update only
@angular-eslint/test-utils
^18.0.1
Update only
@angular-eslint/builder
^18.0.1
Update only
@angular-eslint/bundled-angular-compiler
^18.0.1
Update only
update-angular-cli-version-18-0-0
Update the @angular/cli package version to ~18.0.0.
Version: 19.1.0-beta.2
Requires
Name
Version
@angular/core
>=18.0.0
19.1.0-package-updates
Version: 19.1.0-beta.2
Requires
Name
Version
@angular/core
>=17.3.0 <18.0.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/build-angular
~18.0.0
Update only
@angular-devkit/core
~18.0.0
Update only
@angular-devkit/schematics
~18.0.0
Update only
@angular/pwa
~18.0.0
Update only
@angular/ssr
~18.0.0
Update only
@schematics/angular
~18.0.0
Update only
@angular-devkit/architect
~0.1800.0
Update only
@angular-devkit/build-webpack
~0.1800.0
Update only
@angular/core
~18.0.0
Add if not installed
@angular/material
~18.0.0
Update only
@angular/cdk
~18.0.0
Update only
ng-packagr
~18.0.0
Update only
19.1.0-jest-package-updates
Version: 19.1.0-beta.2
Requires
Name
Version
@angular-devkit/build-angular
>=15.0.0 <19.0.0
@angular/compiler-cli
>=15.0.0 <19.0.0
@angular/core
>=15.0.0 <19.0.0
@angular/platform-browser-dynamic
>=15.0.0 <19.0.0
jest
^29.0.0
Packages
Name
Version
Always Add to package.json
jest-preset-angular
~14.1.0
Update only
18.2.x
update-angular-cli-version-17-3-0
Update the @angular/cli package version to ~17.3.0.
Version: 18.2.0-beta.0
Requires
Name
Version
@angular/core
>=17.3.0
18.2.0-package-updates
Version: 18.2.0-beta.0
Requires
Name
Version
@angular/core
>=17.2.0 <17.3.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/build-angular
~17.3.0
Update only
@angular-devkit/core
~17.3.0
Update only
@angular-devkit/schematics
~17.3.0
Update only
@angular/pwa
~17.3.0
Update only
@angular/ssr
~17.3.0
Update only
@schematics/angular
~17.3.0
Update only
@angular-devkit/architect
~0.1703.0
Update only
@angular-devkit/build-webpack
~0.1703.0
Update only
@angular/core
~17.3.0
Add if not installed
@angular/material
~17.3.0
Update only
@angular/cdk
~17.3.0
Update only
ng-packagr
~17.3.0
Update only
18.2.0-angular-eslint-package-updates
Version: 18.2.0-beta.0
Requires
Name
Version
eslint
^7.20.0 || ^8.0.0
@angular/core
>= 17.0.0 < 18.0.0
Packages
Name
Version
Always Add to package.json
@angular-eslint/eslint-plugin
~17.3.0
Update only
@angular-eslint/eslint-plugin-template
~17.3.0
Update only
@angular-eslint/template-parser
~17.3.0
Update only
18.1.x
fix-target-defaults-for-webpack-browser
Ensure targetDefaults inputs for task hashing when '@nx/angular:webpack-browser' is used are correct for Module Federation.
Version: 18.1.1-beta.0
18.1.0-jest-package-updates
Version: 18.1.0-beta.2
Requires
Name
Version
@angular-devkit/build-angular
>=15.0.0 <18.0.0
@angular/compiler-cli
>=15.0.0 <18.0.0
@angular/core
>=15.0.0 <18.0.0
@angular/platform-browser-dynamic
>=15.0.0 <18.0.0
jest
^29.0.0
Packages
Name
Version
Always Add to package.json
jest-preset-angular
~14.0.3
Update only
update-angular-cli-version-17-2-0
Update the @angular/cli package version to ~17.2.0.
Version: 18.1.0-beta.1
Requires
Name
Version
@angular/core
>=17.2.0
18.1.0-package-updates
Version: 18.1.0-beta.1
Requires
Name
Version
@angular/core
>=17.1.0 <17.2.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/build-angular
~17.2.0
Update only
@angular-devkit/core
~17.2.0
Update only
@angular-devkit/schematics
~17.2.0
Update only
@angular/pwa
~17.2.0
Update only
@angular/ssr
~17.2.0
Update only
@schematics/angular
~17.2.0
Update only
@angular-devkit/architect
~0.1702.0
Update only
@angular-devkit/build-webpack
~0.1702.0
Update only
@angular/core
~17.2.0
Add if not installed
@angular/material
~17.2.0
Update only
@angular/cdk
~17.2.0
Update only
ng-packagr
~17.2.0
Update only
18.0.x
add-module-federation-env-var-to-target-defaults
Add NX_MF_DEV_SERVER_STATIC_REMOTES to inputs for task hashing when '@nx/angular:webpack-browser' is used for Module Federation.
Version: 18.0.0-beta.0
17.3.x
update-angular-cli-version-17-1-0
Update the @angular/cli package version to ~17.1.0.
Version: 17.3.0-beta.10
Requires
Name
Version
@angular/core
>=17.1.0
add-browser-sync-dependency
Add 'browser-sync' as dev dependency when '@angular-devkit/build-angular:ssr-dev-server' or '@nx/angular:module-federation-dev-ssr' is used.
Version: 17.3.0-beta.10
Requires
Name
Version
@angular/core
>=17.1.0
add-autoprefixer-dependency
Add 'autoprefixer' as dev dependency when '@nx/angular:ng-packagr-lite' or '@nx/angular:package` is used.
Version: 17.3.0-beta.10
Requires
Name
Version
@angular/core
>=17.1.0
17.3.0-package-updates
Version: 17.3.0-beta.10
Requires
Name
Version
@angular/core
>=17.0.0 <17.1.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/build-angular
~17.1.0
Update only
@angular-devkit/core
~17.1.0
Update only
@angular-devkit/schematics
~17.1.0
Update only
@angular/pwa
~17.1.0
Update only
@angular/ssr
~17.1.0
Update only
@schematics/angular
~17.1.0
Update only
@angular-devkit/architect
~0.1701.0
Update only
@angular-devkit/build-webpack
~0.1701.0
Update only
@angular/core
~17.1.0
Add if not installed
@angular/material
~17.1.0
Update only
@angular/cdk
~17.1.0
Update only
ng-packagr
~17.1.0
Update only
zone.js
~0.14.3
Update only
17.3.0-types-node-package-updates
Version: 17.3.0-beta.3
Packages
Name
Version
Always Add to package.json
@types/node
^18.16.9
Update only
17.2.x
17.2.0-ngrx-package-updates
Version: 17.2.0-beta.3
Requires
Name
Version
@angular/core
^17.0.0
Packages
Name
Version
Always Add to package.json
@ngrx/store
~17.0.0
Update only
rename-webpack-dev-server-executor
Rename '@nx/angular:webpack-dev-server' executor to '@nx/angular:dev-server'
Version: 17.2.0-beta.2
17.1.x
17.1.3-jest-package-updates
Version: 17.1.3-beta.0
Requires
Name
Version
@angular-devkit/build-angular
>=13.0.0 <18.0.0
@angular/compiler-cli
>=13.0.0 <18.0.0
@angular/core
>=13.0.0 <18.0.0
@angular/platform-browser-dynamic
>=13.0.0 <18.0.0
jest
^29.0.0
Packages
Name
Version
Always Add to package.json
jest-preset-angular
~13.1.4
Update only
update-angular-cli-version-17-0-0
Update the @angular/cli package version to ~17.0.0.
Version: 17.1.0-beta.5
Requires
Name
Version
@angular/core
>=17.0.0
rename-browser-target-to-build-target
Rename 'browserTarget' to 'buildTarget'.
Version: 17.1.0-beta.5
Requires
Name
Version
@angular/core
>=17.0.0
replace-nguniversal-builders
Replace usages of '@nguniversal/builders' with '@angular-devkit/build-angular'.
Version: 17.1.0-beta.5
Requires
Name
Version
@angular/core
>=17.0.0
replace-nguniversal-engines
Replace usages of '@nguniversal/' packages with '@angular/ssr'.
Version: 17.1.0-beta.5
Requires
Name
Version
@angular/core
>=17.0.0
update-zone-js-deep-import
Replace the deep imports from 'zone.js/dist/zone' and 'zone.js/dist/zone-testing' with 'zone.js' and 'zone.js/testing'.
Version: 17.1.0-beta.5
Requires
Name
Version
@angular/core
>=17.0.0
17.1.0-package-updates
Version: 17.1.0-beta.5
Requires
Name
Version
@angular/core
>=16.2.0 <17.0.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/architect
~0.1700.0
Update only
@angular-devkit/build-angular
~17.0.0
Update only
@angular-devkit/build-webpack
~0.1700.0
Update only
@angular-devkit/core
~17.0.0
Update only
@angular-devkit/schematics
~17.0.0
Update only
@angular/pwa
~17.0.0
Update only
@angular/core
~17.0.0
Add if not installed
@angular/material
~17.0.0
Update only
@angular/cdk
~17.0.0
Update only
@schematics/angular
~17.0.0
Update only
ng-packagr
~17.0.0
Update only
zone.js
~0.14.0
Update only
17.1.0-jest-package-updates
Version: 17.1.0-beta.5
Requires
Name
Version
@angular-devkit/build-angular
>=13.0.0 <18.0.0
@angular/compiler-cli
>=13.0.0 <18.0.0
@angular/core
>=13.0.0 <18.0.0
@angular/platform-browser-dynamic
>=13.0.0 <18.0.0
jest
^29.0.0
Packages
Name
Version
Always Add to package.json
jest-preset-angular
~13.1.3
Update only
17.1.0-angular-eslint-package-updates
Version: 17.1.0-beta.5
Requires
Name
Version
eslint
^7.20.0 || ^8.0.0
@angular/core
>= 17.0.0 < 18.0.0
Packages
Name
Version
Always Add to package.json
@angular-eslint/eslint-plugin
~17.0.0
Update only
@angular-eslint/eslint-plugin-template
~17.0.0
Update only
@angular-eslint/template-parser
~17.0.0
Update only
16.8.x
16.8.0-package-updates
Version: 16.8.0-beta.2
Packages
Name
Version
Always Add to package.json
esbuild
^0.19.2
Update only
16.7.x
update-angular-cli-version-16-2-0
Update the @angular/cli package version to ~16.2.0.
Version: 16.7.0-beta.6
Requires
Name
Version
@angular/core
>=16.2.0
16.7.0-package-updates
Version: 16.7.0-beta.6
Requires
Name
Version
@angular/core
>=16.1.0 <16.2.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/architect
~0.1602.0
Update only
@angular-devkit/build-angular
~16.2.0
Update only
@angular-devkit/build-webpack
~0.1602.0
Update only
@angular-devkit/core
~16.2.0
Update only
@angular-devkit/schematics
~16.2.0
Update only
@angular/pwa
~16.2.0
Update only
@angular/core
~16.2.0
Add if not installed
@angular/material
~16.2.0
Update only
@angular/cdk
~16.2.0
Update only
@nguniversal/builders
~16.2.0
Update only
@nguniversal/common
~16.2.0
Update only
@nguniversal/express-engine
~16.2.0
Update only
@schematics/angular
~16.2.0
Update only
ng-packagr
~16.2.0
Update only
16.6.x
explicitly-set-projects-to-update-buildable-deps
Explicitly set 'updateBuildableProjectDepsInPackageJson' to 'true' in targets that rely on that value as the default.
Version: 16.6.0-beta.0
16.4.x
update-angular-cli-version-16-1-0
Update the @angular/cli package version to ~16.1.0.
Version: 16.4.0-beta.11
Requires
Name
Version
@angular/core
>=16.1.0
16.4.0-package-updates
Version: 16.4.0-beta.11
Requires
Name
Version
@angular/core
>=16.0.0 <16.1.0
Packages
Name
Version
Always Add to package.json
@angular-devkit/architect
~0.1601.0
Update only
@angular-devkit/build-angular
~16.1.0
Update only
@angular-devkit/build-webpack
~0.1601.0
Update only
@angular-devkit/core
~16.1.0
Update only
@angular-devkit/schematics
~16.1.0
Update only
@angular/pwa
~16.1.0
Update only
@angular/core
~16.1.0
Add if not installed
@angular/material
~16.1.0
Update only
@angular/cdk
~16.1.0
Update only
@nguniversal/builders
~16.1.0
Update only
@nguniversal/common
~16.1.0
Update only
@nguniversal/express-engine
~16.1.0
Update only
@schematics/angular
~16.1.0
Update only
ng-packagr
~16.1.0
Update only
rename-angular-eslint-accesibility-rules
Remove the 'accessibility-' prefix from '@angular-eslint/eslint-plugin-template' rules.