Files
nrwl--nx/packages/angular/docs/dev-server-examples.md
Jack Hsu 1c8796a4d7 docs(misc): update migration docs to use supported markdown syntax (#33563)
This PR cleans up the markdown files under `packages/`. We previously
had to support Next.js docs and translate it for astro docs with proper
markdown syntax. This applies to generators, executors, and migrations.

Also removes the function to do the translation in astro app since it's
no longer needed.

## Code block (migrations)
<img width="1086" height="800" alt="Screenshot 2025-11-20 at 1 23 53 PM"
src="https://github.com/user-attachments/assets/bd9acb9b-7960-4e41-9d26-22d29da6658e"
/>

## Aside (generators)
<img width="802" height="443" alt="Screenshot 2025-11-20 at 1 43 17 PM"
src="https://github.com/user-attachments/assets/e2999821-8783-46ed-a984-2193f6f8eafa"
/>
2025-11-21 09:25:34 -05:00

2.4 KiB

This executor is a drop-in replacement for the @angular-devkit/build-angular:dev-server builder provided by the Angular CLI. In addition to the features provided by the Angular CLI builder, the @nx/angular:dev-server executor also supports the following:

  • Serving applications with Vite when using the @nx/angular:application or @nx/angular:browser-esbuild executors to build them
  • Serving applications with webpack when using the @nx/angular:webpack-browser executor
  • Providing HTTP request middleware functions when the build target is using an esbuild-based executor
  • Incremental builds

Examples

Using a custom webpack configuration

This executor should be used along with @nx/angular:webpack-browser to serve an application using a custom webpack configuration.

Add the serve target using the @nx/angular:dev-server executor, set the build target executor as @nx/angular:webpack-browser and set the customWebpackConfig option as shown below:

"build": {
  "executor": "@nx/angular:webpack-browser",
  "options": {
    ...
    "customWebpackConfig": {
      "path": "apps/my-app/webpack.config.js"
    }
  }
},
"serve": {
  "executor": "@nx/angular:dev-server",
  "configurations": {
    "production": {
      "buildTarget": "my-app:build:production"
    },
    "development": {
      "buildTarget": "my-app:build:development"
    }
  },
  "defaultConfiguration": "development",
}
module.exports = (config) => {
  // update the config with your custom configuration

  return config;
};
Providing HTTP request middleware function

The executor accepts an esbuildMiddleware option that allows you to provide HTTP require middleware functions that will be used by the Vite development server.

{
  ...
  "targets": {
    "serve": {
      "executor": "@nx/angular:dev-server",
      "options": {
        ...
        "esbuildMiddleware": ["apps/my-app/hello-world.middleware.ts"]
      }
    }
    ...
  }
}
import type { IncomingMessage, ServerResponse } from 'node:http';

const helloWorldMiddleware = (
  req: IncomingMessage,
  res: ServerResponse,
  next: (err?: unknown) => void
) => {
  if (req.url === '/hello-world') {
    res.end('<h1>Hello World!</h1>');
  } else {
    next();
  }
};

export default helloWorldMiddleware;