Doug Parker 160dee33d7 fix(@schematics/angular): don't show server routing prompt when using browser builder
The new routing APIs don't support `browser` builder, but calling `ng add @angular/ssr` with a `browser` builder would still prompt the user to add them. If the user said "Yes", it would actually ignore that answer and not enable the new APIs.

With this change, `ng add @angular/ssr` when using `browser` builder does not show the prompt and assumes the answer is "No". It also throws an error if the user runs `ng add @angular/ssr --server-routing`.

I'm not aware of a built-in prompting mechanism in schematics beyond `x-prompt`, which can't be used here, so instead I just called Inquirer directly. Unfortunately testing the prompt is a little awkward, as Inquirier does not provide useful APIs in this space. I evaluated `@inquirer/testing`, but ultimately decided that was more intended for testing custom Inquirer prompts, not mocking usage of standard prompts. Schematics APIs do not provide a useful way to inject additional data like a mock, so instead I had to do this through a `setPrompterForTestOnly` function. I'm not a huge fan of it, but I don't see a more straightforward way of solving the problem.
2024-11-18 10:37:31 -08:00
..

@schematics/angular

This package contains a collection of schematics for generating an Angular application.

Schematics

Name Description
app-shell Generates an app shell for running a server-side version of an app
application Generates a new basic app definition in the "projects" subfolder of the workspace
class Creates a new, generic class definition in the given project
component Creates a new, generic component definition in the given project
directive Creates a new, generic directive definition in the given project
enum Generates a new, generic enum definition in the given project
guard Generates a new, generic route guard definition in the given project
interceptor Creates a new, generic interceptor definition in the given project
interface Creates a new, generic interface definition in the given project
library Creates a new, generic library project in the current workspace
module Creates a new, generic NgModule definition in the given project
ng-new Creates a new project by combining the workspace and application schematics
pipe Creates a new, generic pipe definition in the given project
resolver Creates a new, generic resolver definition in the given project
service Creates a new, generic service definition in the given project
service-worker Pass this schematic to the "run" command to create a service worker
web-worker Creates a new, generic web worker definition in the given project
workspace Initializes an empty workspace and adds the necessary dependencies required by an Angular application

Disclaimer

While the schematics when executed via the Angular CLI and their associated options are considered stable, the programmatic APIs are not considered officially supported and are not subject to the breaking change guarantees of SemVer.