What is @angular-devkit/schematics-cli?
@angular-devkit/schematics-cli is a command-line interface tool that allows developers to create and manage schematics in Angular projects. Schematics are templates for code generation and modification, which can be used to automate repetitive tasks, enforce coding standards, and streamline project setup.
What are @angular-devkit/schematics-cli's main functionalities?
Generate a new schematic
This command generates a new blank schematic with the specified name. Schematics can be used to automate code generation and modifications in Angular projects.
schematics blank --name=my-schematic
Run a schematic
This command runs a schematic from the current directory. The schematic will perform the code generation or modification tasks defined in its implementation.
schematics .:my-schematic
Debug a schematic
This command runs a schematic in debug mode, allowing developers to see detailed logs and diagnose issues with their schematics.
schematics .:my-schematic --debug=false
Other packages similar to @angular-devkit/schematics-cli
yeoman-generator
Yeoman Generator is a scaffolding tool that allows developers to create custom generators for project setup and code generation. It is more general-purpose compared to @angular-devkit/schematics-cli, which is specifically designed for Angular projects.
plop
Plop is a micro-generator framework that allows developers to create custom generators for code scaffolding. It is lightweight and flexible, making it suitable for a wide range of projects, not just Angular.
hygen
Hygen is a fast and lightweight code generator that allows developers to create and run custom templates. It focuses on simplicity and speed, making it a good alternative for those who need quick and easy code generation without the complexity of Angular-specific tools.
Schematics CLI
This package contains the executable for running a Schematic.
Usage
$ schematics [CollectionName:]SchematicName [options, ...]
By default, if the collection name is not specified, use the internal collection provided
by the Schematics CLI.
Options:
--debug Debug mode. This is true by default if the collection is a relative
path (in that case, turn off with --debug=false).
--allow-private Allow private schematics to be run from the command line. Default to
false.
--dry-run Do not output anything, but instead just show what actions would be
performed. Default to true if debug is also true.
--force Force overwriting files that would otherwise be an error.
--list-schematics List all schematics from the collection, by name. A collection name
should be suffixed by a colon. Example: '@angular-devkit/schematics-cli:'.
--no-interactive Disables interactive input prompts.
--verbose Show more information.
--help Show this message.
Any additional option is passed to the Schematics depending on its schema.
Examples
- Create a new NPM package that contains a blank schematic.
$ schematics blank <name>
- Walkthrough example that demonstrates how to build a schematic.
$ schematics schematic --name <name>
19.0.0 (2024-11-19)
Breaking Changes
@schematics/angular
- The app-shell schematic is no longer compatible with Webpack-based builders.
@angular-devkit/build-angular
-
The browserTarget
option has been removed from the DevServer and ExtractI18n builders. buildTarget
is to be used instead.
-
Protractor is no longer supported.
Protractor was marked end-of-life in August 2023 (see https://protractortest.org/). Projects still relying on Protractor should consider migrating to another E2E testing framework, several support solid migration paths from Protractor.
- https://angular.dev/tools/cli/end-to-end
- https://blog.angular.dev/the-state-of-end-to-end-testing-with-angular-d175f751cb9c
@angular-devkit/core
@angular/build
- The
@angular/localize/init
polyfill will no longer be added automatically to projects. To prevent runtime issues, ensure that this polyfill is manually included in the "polyfills" section of your "angular.json" file if your application relies on Angular localization features.
@angular/ssr
-
The CommonEngine
API now needs to be imported from @angular/ssr/node
.
Before
import { CommonEngine } from '@angular/ssr';
After
import { CommonEngine } from '@angular/ssr/node';
@angular-devkit/schematics-cli
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | ---- | --------------------------------------------- |
| 37693c40e | feat | add package manager option to blank schematic |
@schematics/angular
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | ---- | -------------------------------------------------------------------------- |
| a381a3db1 | feat | add option to export component as default |
| 755f3a07f | feat | add option to setup new workspace or application as zoneless mode |
| cfca5442e | feat | integrate withEventReplay()
in provideClientHydration
for new SSR apps |
| 292a4b7c2 | feat | update app-shell and ssr schematics to adopt new Server Rendering API |
| b1504c3bc | fix | component spec with export default |
| 4b4e000dd | fix | don't show server routing prompt when using browser
builder |
| 4e2a5fe15 | fix | enable opt-in for new @angular/ssr
feature |
| fcf7443d6 | fix | explicitly set standalone:false |
| 7992218a9 | fix | remove declaration
and sourceMap
from default tsconfig |
| 9e6ab1bf2 | fix | use default import for express
|
@angular/cli
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------------------------- |
| 201b60e1d | feat | handle string key/value pairs, e.g. --define |
| b847d4460 | fix | recommend optional application update migration during v19 update |
| f249e7e85 | perf | enable Node.js compile code cache when available |
| ecc107d83 | perf | enable Node.js compile code cache when available |
@angular-devkit/architect
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------- |
| 78f76485f | feat | merge object options from CLI |
@angular-devkit/build-angular
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------- |
| 0a4ef3026 | feat | karma-coverage w/ app builder |
| dcbdca85c | feat | karma+esbuild+watch |
| 54594b5ab | feat | support karma with esbuild |
| ea5ae68da | fix | bring back style tags in browser builder |
| 476f94f51 | fix | fix --watch regression in karma |
| 25d928b4f | fix | fix hanging terminal when browser-sync
is not installed |
| 2ec877dd0 | fix | handle basename collisions |
| ab6e19e1f | fix | handle main field |
| 43e7aae22 | fix | remove double-watch in karma |
| 1e37b5939 | fix | serve assets |
| 9d7613db9 | fix | zone.js/testing + karma + esbuild |
| e40384e63 | refactor | remove deprecated browserTarget
|
| 62877bdf2 | refactor | remove Protractor builder and schematics |
@angular-devkit/core
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------ |
| 0d8a1006d | refactor | remove deprecated fileBuffer
function in favor of stringToFileBuffer
|
@angular/build
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------------------------------------- |
| b6951f448 | feat | add sass
to stylePreprocessorOptions
in application builder |
| efb434136 | feat | Auto-CSP support as a part of angular.json schema |
| 816e3cb86 | feat | enable component stylesheet hot replacement by default |
| 3b00fc908 | feat | introduce outputMode
option to the application builder |
| 7d883a152 | feat | introduce ssr.experimentalPlatform
option |
| c48d6947e | feat | set development/production condition |
| f63072668 | feat | utilize ssr.entry
during prerendering to enable access to local API routes |
| bbc290133 | feat | utilize ssr.entry
in Vite dev-server when available |
| 5a7a2925b | fix | add missing redirect in SSR manifest |
| 06e5176c2 | fix | add warning when --prerendering
or --app-shell
are no-ops |
| ecaf870b5 | fix | always clear dev-server error overlay on non-error result |
| f8677f6a9 | fix | always record component style usage for HMR updates |
| 099e477a8 | fix | avoid hashing development external component stylesheets |
| 3602bbb77 | fix | avoid overwriting inline style bundling additional results |
| 71534aadc | fix | check referenced files against native file paths |
| fed31e064 | fix | correctly use dev-server hmr option to control stylesheet hot replacement |
| b86bb080e | fix | disable dev-server websocket when live reload is disabled |
| 7c50ba9e2 | fix | ensure index.csr.html
is always generated when prerendering or SSR are enabled |
| efb2232df | fix | ensure accurate content size in server asset metadata |
| 18a8584ea | fix | ensure SVG template URLs are considered templates with external stylesheets |
| 7502fee28 | fix | Exclude known --import
from execArgv when spawning workers |
| 2551df533 | fix | fully disable component style HMR in JIT mode |
| c41529cc1 | fix | handle APP_BASE_HREF
correctly in prerendered routes |
| 87a90afd4 | fix | incomplete string escaping or encoding |
| 1bb68ba68 | fix | move lmdb to optionalDependencies |
| a995c8ea6 | fix | prevent prerendering of catch-all routes |
| 1654acf0f | fix | relax constraints on external stylesheet component id |
| 0d4558ea5 | fix | set ngServerMode
during vite prebundling |
| 55d7f01b6 | fix | simplify disabling server features with --no-server
via command line |
| cf0228b82 | fix | skip wildcard routes from being listed as prerendered routes |
| af52fb49b | fix | synchronize import/export conditions between bundler and TypeScript |
| 6c618d495 | fix | update logic to support both internal and external SSR middlewares |
| bfa8fec9b | fix | use named export reqHandler
for server.ts request handling |
| c8e1521a2 | fix | workaround Vite CSS ShadowDOM hot replacement |
| d6a34034d | refactor | remove automatic addition of @angular/localize/init
polyfill and related warnings |
@angular/ssr
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | ---- | ---------------------------------------------------------------------------------------------------------- |
| 92209dd2e | feat | add createRequestHandler
and createNodeRequestHandler
utilities |
| 41fb2ed86 | feat | Add getHeaders
Method to AngularAppEngine
and AngularNodeAppEngine
for handling pages static headers |
| f346ee8a8 | feat | add isMainModule
function |
| d66aaa3ca | feat | add server routing configuration API |
| bca568389 | feat | dynamic route resolution using Angular router |
| 30c25bf68 | feat | export AngularAppEngine
as public API |
| 455b5700c | feat | expose writeResponseToNodeResponse
and createWebRequestFromNodeRequest
in public API |
| 9692a9054 | feat | improve handling of aborted requests in AngularServerApp
|
| 576ff604c | feat | introduce AngularNodeAppEngine
API for Node.js integration |
| 3c9697a8c | feat | introduce new hybrid rendering API |
| 4b09887a9 | feat | move CommonEngine
API to /node
entry-point |
| d43180af5 | fix | add missing peer dependency on @angular/platform-server
|
| 74b3e2d51 | fix | add validation to prevent use of provideServerRoutesConfig
in browser context |
| 2640bf7a6 | fix | correct route extraction and error handling |
| 44077f54e | fix | designate package as side-effect free |
| df4e1d360 | fix | enable serving of prerendered pages in the App Engine |
| 0793c78cf | fix | ensure wildcard RenderMode is applied when no Angular routes are defined |
| 65b6e75a5 | fix | export RESPONSE_INIT
, REQUEST
, and REQUEST_CONTEXT
tokens |
| 4ecf63a77 | fix | export PrerenderFallback |
| 50df63196 | fix | improve handling of route mismatches between Angular server routes and Angular router |
| 3cf7a5223 | fix | initialize the DI tokens with null
to avoid requiring them to be set to optional |
| 85df4011b | fix | resolve bootstrap is not a function
error |
| e9c9e4995 | fix | resolve circular dependency issue from main.server.js reference in manifest |
| 64c52521d | fix | show error when multiple routes are set with RenderMode.AppShell
|
| 280ebbda4 | fix | support for HTTP/2 request/response handling |
| fb05e7f0a | fix | use wildcard server route configuration on the '/' route when the app router is empty |
| 12ff37adb | perf | cache generated inline CSS for HTML |
| 1d70e3b46 | perf | cache resolved entry-points |
| f460b91d4 | perf | integrate ETags for prerendered pages |
| e52ae7f6f | perf | prevent potential stampede in entry-points cache |
<!-- CHANGELOG SPLIT MARKER -->
<a name="18.2.12"></a>