Setup incremental builds for Angular applications
In this guide we’ll specifically look into which changes need to be made to enable incremental builds for Angular applications.
Incremental builds require @nrwl/angular:webpack-browser, which requires Nx version 10.4.0 or later.
Use buildable libraries
To enable incremental builds you need to use buildable libraries. You can generate a new buildable lib with
nx g @nrwl/angular:lib mylib --buildable
Adjust the executors/builders
Nx comes with faster executors allowing for a faster build. Make sure that your libraries use the @nrwl/angular:ng-packagr-lite builder.
"mylib": {
    "projectType": "library",
    ...
    "architect": {
        "build": {
            "builder": "@nrwl/angular:ng-packagr-lite",
            "options": {...},
            "configurations": {...}
        },
        "lint": {...},
        "test": {...}
    },
   ...
},
Change your Angular app’s executor to @nrwl/angular:webpack-browser and the “serve” executor to @nrwl/web:file-server instead.
"app0": {
    "projectType": "application",
    ...
    "architect": {
        "build": {
            "builder": "@nrwl/angular:webpack-browser",
            "options": { ... }
            "configurations": { ... }
        },
        "serve": {
            "builder": "@nrwl/web:file-server",
            "options": {
                "buildTarget": "app0:build"
            },
            "configurations": {
                "production": {
                    "buildTarget": "app0:build:production"
                }
            }
        },
        ...
    }
},
Running and serving incremental builds
To build an app incrementally use the following commands.
nx build myapp --with-deps --parallel
To serve an app incrementally use this command:
nx serve myapp --with-deps --parallel
Note: you can specify the --with-deps and --parallel flags as part of the options property on the file-server executor in your angular.json or workspace.json. The file-server executor will pass those to the nx build command it invokes.
"app0": {
    "projectType": "application",
    ...
    "architect": {
        "build": {
            "builder": "@nrwl/angular:webpack-browser",
            "options": { ... }
            "configurations": { ... }
        },
        "serve": {
            "builder": "@nrwl/web:file-server",
            "options": {
                "buildTarget": "app0:build",
                "withDeps": true,
                "parallel": true
            },
            "configurations": {
                "production": {
                    "buildTarget": "app0:build:production"
                }
            }
        },
        ...
    }
},
Example repository
Check out the nx-incremental-large-repo for a live example.