mirror of
https://github.com/angular/angular-cli.git
synced 2025-05-16 18:43:42 +08:00
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.
@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.