This article is tied to Angular CLI version < 6. For Angular CLI 6+, check out the official docs.

In my last blog post, I talked about the reasons why you should use the Angular CLI for your next Angular application. I told you that with the Angular CLI, you get out of the box some great commands that will ease your day-to-day job.
In this blog post, I would like to share with you the commands and the options that I find the most useful.

The dry-run option


Most of the following commands accept the --dry-run option.
It tells the Angular CLI to only show what files would have been generated when running the commands. No file will be written to disk. This is my favorite option as it allows me to try the commands in order to make sure that they do what I want.

Generating a new Angular application (ng new)

ng new my-ng-app

Generate a new application in the ./my-ng-app directory.

ng new my-ng-app --skip-install

Don't run npm install or yarn for me.

ng new my-ng-app --skip-tests

Don't generate test files (*.specs.ts).
I usually want test files to be generated. But when I am building a demo application, this option comes to be very handy.

ng new my-ng-app --prefix amc

Use amc as the prefix for generated components. By default the prefix is app.
But I suggest that you use a custom prefix for all your applications. This helps avoid naming collisions when you want to share your components with the world.

ng new my-ng-app --style scss

Define scss as our style files extensions.

ng new my-ng-app --routing

Generate a routing module (app-routing.module.ts) for our root module (app.module.ts)

ng new my-ng-app --routing --style scss --prefix amc

This command combines all my favorite options for generating a new Angular application.

Generating Angular blueprints (ng generate)

the --collection Option

Most of the following commands accept the --collection option.
It tells the Angular CLI to use a specific schematics for the files that will be generated.

Generating declarables (components, directives, and pipes) blueprints

ng generate component|directive|pipe declarable

Generate a new Angular declarable called declarable. The declarable will be in its own folder and added to the declarations array of the nearest module found.

ng generate component|directive|pipe declarable --flat

Generate a new declarable without putting it in its own folder.

ng generate component|directive|pipe declarable --spec false

don't generate test files for the declarable.

ng generate component|directive|pipe declarable --module app.module

Declare the generated declarable in app.module instead of the nearest module found. You can specify whatever is the path of the module you want your declarable to be declared in.

Generating providers (services and guards) blueprints

ng generate service|guard my-provider

Generate a new service or guard.

ng generate service|guard provider --flat

Don't put the generated provider in its own folder.

ng generate service|guard provider --spec false

Don't generate a spec file for the provider.

ng generate service|guard provider --module app.module

Add the service or guard to the providers array of app.module.

Generating modules blueprints

ng generate module my-module

Generate a new module.

ng generate module my-module --flat

Don't put the new module in its own folder.

ng generate module my-module --routing

Generate a routing module (my-module-routing.module.ts) associated with the module.

ng generate module my-module --module app.module

Add the module to the imports array of app.module.

Checking the quality of our code (ng lint, ng test, ng e2e)

Linting our code

ng lint 

Lint the project against the official Angular style guide using Codelyzer.

ng lint --format stylish

Use the stylish output format to display linting errors.

ng lint --fix

Try to automatically fix linting errors.

Running the tests

ng test

Run the unit tests and watch the files.

ng test --single-run

Run the unit tests once and exit.

ng test --code-coverage

Output code coverage files in the ./coverage directory.

ng test --browsers PhantomJS

Use PhantomJS to run the tests.

ng e2e

Run e2e tests.

ng e2e --element-explorer

Allow debugging by enabling Protractor's Element Explorer.

Serving our application for local development (ng serve)

ng serve

Build the application in-memory and serves it up.

ng serve --open

Open the application in the browser.

ng serve --proxy-config proxy.conf.js

Use the proxy.conf.js file to configure proxying to a backend for instance.

ng serve --sourcemaps false

Disable the generation of sourcemaps. With this option you won't be able to debug your application correctly but it bypasses the "92% chunk asset optimization bug".

ng serve --ssl true

Serve the application using https. The default SSL key and certificate are ./ssl/server.key and ./ssl/server.crt.

Building our application for deployment (ng build)

ng build

Build the application without optimization in the ./dist directory.

ng build --environment prod

Use prod as build environment. This means that the file will be used instead of environment.ts.

ng build --target production

Define production as build target. With this we will have all kinds of optimization for our Angular application. We are ready to go to production.

ng build --prod

Define production as build target and use prod as build environment. This is equivalent to combining the last two commands (ng build --environment prod --target prod).


The list of Angular CLI commands and options in this article is not exhaustive. I just showed you some of my favorites. I want to mention that all the commands and options you saw earlier, have short forms. For example, we can use ng g c instead of ng generate component.
Thanks you for reading and see you soon.

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