In this article, we are going to learn what the different types of Angular CLI commands are, and the tools that power them. Let's get started.

There are three types of Angular CLI commands:

schematics commands: ng add , ng generate , ng new , ng update ;

commands: , , , ; architect commands: ng build , ng deploy , ng e2e , ng lint , ng run , ng serve , ng test , ng xi18n ;

commands: , , , , , , , ; and native commands: ng config , ng doc , ng version , ng analytics , ng help .

Schematics commands

Schematics commands are based on a tool called Schematics that comes from the @angular-devkit/schematics package. Schematics is the underlying tool the Angular CLI uses to scaffold a new Angular workspace ( ng new ), generate blueprints ( ng generate ), update/migrate existing code ( ng update ), and add some frameworks support to an Angular application ( ng add ). It's all about code generation.

The nice thing about Schematics is that it allows us to extend the CLI's scaffolding capabilities.

Learn how Air France-KLM is leveraging schematics in another blog post– The Angular CLI at Air France-KLM.

Architect commands

Architect commands are based on a tool called Architect that is published under the @angular-devkit/architect package name. Architect helps the Angular CLI lint ( ng lint ), test ( ng test , ng e2e ), serve ( ng serve ), build ( ng build ), and deploy ( ng deploy ) our Angular applications. It's all about running complex tasks.

With the Architect tool, we can now create custom tasks for the Angular CLI. Previously, one would eject the Webpack configuration of the Angular CLI–using the now deprecated ng eject command–to be able to tweak the build process. Now every customization can be done using Architect . That's why, the ng eject command was removed in Angular CLI v8.

Native commands

Native commands are general Angular CLI commands. They are native to the Angular CLI in the sense that they don't rely on other tools/packages to be executed. Displaying our packages' versions ( ng version ), opening the official documentation ( ng doc ), reading and setting some values in the angular.json file ( ng config ), or displaying the list of available commands and their description ( ng help ) do not require the use of any specific tool.

Conclusion

In this article, we learned that they were three types of Angular CLI commands: native commands, schematics commands, and architect commands. Schematics and Architect are tools from the @angular-devkit packages that make the Angular CLI generic, extensible, and so powerful.

If you enjoyed this article, follow @ahasall on Twitter for more content like this.