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>
18.0.0 (2024-05-22)
Breaking Changes
@angular/cli
- The
ng doc
command has been removed without a replacement. To perform searches, please visit www.angular.dev - Node.js support for versions <18.19.1 and <20.11.1 has been removed.
@angular-devkit/build-angular
-
By default, the index.html file is no longer emitted in the browser directory when using the application builder with SSR. Instead, an index.csr.html file is emitted. This change is implemented because in many cases server and cloud providers incorrectly treat the index.html file as a statically generated page. If you still require the old behavior, you can use the index
option to specify the output
file name.
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:application",
"options": {
"outputPath": "dist/my-app",
"index": {
"input": "src/index.html",
"output": "index.html"
}
}
}
}
-
The support for the legacy Sass build pipeline, previously accessible via NG_BUILD_LEGACY_SASS
when utilizing webpack-based builders, has been removed.
Deprecations
@angular-devkit/schematics
NodePackageLinkTask
in @angular-devkit/schematics
. A custom task should be created instead.
@angular/cli
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------- |
| ac3019570 | feat | add ng dev
alias to ng serve
|
| 4087728c3 | feat | support for Node.js v22 |
| 41ab6c8c3 | fix | add --version
option |
| df4dde95d | fix | add @angular/build
package to update group list |
| 1039f6d79 | fix | change update guide link to angular.dev |
| f4670fcb1 | fix | eliminate prompts during ng version
command |
| a99ec6a54 | fix | keep cli package first in update package group metadata |
| dd786d495 | fix | only add --version option on default command |
| 03eee0545 | refactor | remove ng doc
command |
| c7b208555 | refactor | remove support for Node.js versions <18.19.1 and <20.11.1 |
@schematics/angular
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------- |
| b2ac5fac7 | feat | allow application migration to use new build package in projects where possible |
| 6530aa11b | feat | replace assets
with public
directory |
| 725883713 | feat | use eventCoalescing option by default (standalone bootstrap) |
| 508d97da7 | feat | use ngZoneEventCoalescing option by default (module bootstrap) |
| f452589e2 | feat | use TypeScript bundler module resolution for new projects |
| 95a4d6ee5 | fix | add less dependency in application migration if needed |
| c46aa084f | fix | add postcss dependency in application migration if needed |
| 157329384 | fix | add spaces around eventCoalescing option |
| 23cc337aa | fix | keep deployUrl option when migrating to application builder |
@angular-devkit/architect
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | ---- | ----------------------------------------------- |
| ddd08efef | fix | resolve builder aliases from containing package |
@angular-devkit/build-angular
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------- |
| 53c319aaa | feat | add support for the poll
option in the library builder |
| 83d1d233a | feat | enhance Sass rebasing importer for resources URL defined in variables and handling of external paths |
| d51cb598a | feat | inject event-dispatch in SSR HTML page |
| 0b03829bc | feat | move i18n extraction for application builder to new build system package |
| 4ffe07aa2 | feat | move Vite-based dev-server for application builder to new build system package |
| d1c632af9 | feat | support native async/await when app is zoneless |
| 37fc7f0cc | fix | disable Vite prebundling when script optimizations are enabled |
| 2acf95a94 | fix | do not generate an index.html
file in the browser directory when using SSR. |
| 8a54875cb | fix | handle wrapping of class expressions emitted by esbuild |
| 97973059e | refactor | remove Sass legacy implementation |
@angular-devkit/schematics
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | -------- | ------------------------------- |
| 797584583 | refactor | deprecate NodePackageLinkTask
|
@angular/build
| Commit | Type | Description |
| --------------------------------------------------------------------------------------------------- | ---- | ------------------------------------------------------------------------------------ |
| 810d213e1 | feat | introduce new official build system package |
| b7a0792b3 | fix | add a maximum rendering timeout for SSG |
| 411115303 | fix | add console note about development server raw file size |
| 921fa7cf4 | fix | add missing ansi-colors
and picomatch
dependencies |
| 791cf75af | fix | check both potential build packages in Angular version check |
| 4d7cd5e3e | fix | correctly wrap class expressions with static properties or blocks emitted by esbuild |
| 57f448a0f | fix | decode URL pathname decoding during SSG fetch |
| 940e382db | fix | disable Vite prebundling when script optimizations are enabled |
| 70dbc7a6e | fix | emit error for invalid self-closing element in index HTML |
| 44b401747 | fix | ensure input index HTML file triggers rebuilds when changed |
| dff4deaeb | fix | ensure recreated files are watched |
| 17931166d | fix | format sizes using decimal byte units consistently |
| 2085365e0 | fix | only generate shallow preload links for initial files |
| 33cd47c85 | fix | properly configure headers for media resources and HTML page |
| d10fece2c | fix | properly rebase Sass url() values with leading interpolations |
| 3f2963835 | perf | add persistent caching of JavaScript transformations |
| a15eb7d1c | perf | improve rebuild time for file loader usage with prebundling |
<!-- CHANGELOG SPLIT MARKER -->
<a name="17.3.8"></a>