A VS Code extension providing Angular CLI commands, schematics generation, and project tools directly from the VS Code interface.
- Right-click context menu integration: Generate Angular schematics by right-clicking any folder in the Explorer
- Organized submenu: All generate commands in a single "Ng Generate" submenu
- Configurable defaults: Set default options for all generate commands in VS Code settings
- Simple workflow: Only prompts for the name; all other options use configured defaults
- Smart project detection: Automatically detects the Angular project from
angular.jsonbased on the folder you right-clicked - Supports all major Angular schematics:
- Component
- Service
- Module
- Directive
- Pipe
- Guard
- Interceptor
- Class
- Interface
- Enum
- Resolver
| Command | Shortcut | Description |
|---|---|---|
| Angular: Serve Application | Ctrl+Shift+A S |
Runs ng serve for a selected project |
| Angular: Debug Application | Ctrl+Shift+A D |
Starts ng serve, waits for the dev server, then attaches a browser debugger |
| Angular: Debug Storybook | Ctrl+Shift+A K |
Starts Storybook, waits for it to be ready, then attaches a browser debugger |
| Angular: Debug Build (Watch) | Ctrl+Shift+A H |
Runs ng build --watch + a static file server, then attaches a browser debugger |
| Angular: Build Project | Ctrl+Shift+A B |
Runs ng build with the configured build configuration |
| Angular: Build Project (Watch) | Ctrl+Shift+A W |
Runs ng build --watch with the configured watch configuration |
| Angular: Test Project | Ctrl+Shift+A T |
Runs ng test for a project, all projects, or the currently open spec file |
| Angular: Restart Serve | Ctrl+Shift+A R |
Restarts any active serve/build-watch terminal; re-attaches the debugger if a debug session was running |
| Angular: Lint Project | Ctrl+Shift+A L |
Runs ng lint for a selected project |
| Angular: Update Packages | Ctrl+Shift+A U |
Shows available package updates and runs ng update for selected packages |
| Angular: Close Terminals | Ctrl+Shift+A C |
Opens a searchable multi-select list of all extension terminals with their state (running / terminated / errored) — select which ones to close |
All terminal-based commands detect the exit code when the terminal closes:
- Success (exit code 0): brief info notification
- Failure (non-zero exit code): warning notification with a Retry button for build, lint, and test commands; Retry re-runs the exact same command without re-prompting
Every command that shows a project picker remembers the last selection per command, persisted across VS Code sessions. The picker shows:
$(file) Current project (…)— if the active editor file belongs to a project$(history) Last used (…)— the last picked project, if different from the above- Full project list
- npm: Install: runs
npm install(or a custom command viaangularCliPlus.npm.installCommand) and streams output to the "Angular CLI Plus: npm" output channel; automatically offers a clean install on failure when using the default command - npm: Clean Install: removes
node_modulesandpackage-lock.jsonthen runsnpm install(or runs a custom command viaangularCliPlus.npm.cleanInstallCommand); offers--forceas a last resort on failure when using the default command - Dependency check: on startup and on every git branch switch the extension verifies that
node_modulesexists and installed package versions satisfypackage.jsonranges, prompting to runnpm installwhen needed; can be disabled viaangularCliPlus.checkDependencies.enabled; also available as Angular CLI Plus: Check Dependencies in the Command Palette - Tool version check: on startup the extension reads the
enginesfield frompackage.jsonand checks that the installed versions of Node.js, npm, yarn, and pnpm satisfy the declared ranges; missing tools that can be installed via npm are installed automatically, version mismatches offer an "Update" button or a link to the tool's download page; can be disabled viaangularCliPlus.checkToolVersions.enabled; also available as Angular CLI Plus: Check Tool Versions in the Command Palette
- Right-click on any folder in the VS Code Explorer
- Select Ng Generate from the context menu
- Choose the type of schematic you want to generate (Component, Service, etc.)
- Enter the name for the item you want to generate
- The extension automatically detects the Angular project from
angular.json:- If one project matches the selected folder it is used automatically
- If multiple projects match you will be prompted to choose from a list
- If no projects match you can type the project name manually (leave empty for the default project)
- The extension runs the Angular CLI command with your configured default options in the selected folder
Use the keyboard shortcuts (Ctrl+Shift+A followed by a letter) or search for Angular CLI Plus commands in the Command Palette (Ctrl+Shift+P):
- Serve (
Ctrl+Shift+A S): select a project and startng servein a terminal - Debug (
Ctrl+Shift+A D): startng serve, wait for the server, then attach a browser debugger; the terminal is stopped when the debug session ends - Debug Storybook (
Ctrl+Shift+A K): detects Storybook viaangular.jsonarchitect targets or astorybooknpm script, starts it, waits for the port (default6006), then attaches a browser debugger; configurable port viaangularCliPlus.storybook.port - Debug Build Watch (
Ctrl+Shift+A H): runsng build --watchand a static file server in parallel, waits for the server port, then attaches a browser debugger; both terminals are stopped when the session ends; configurable viaangularCliPlus.buildWatch.servePortandangularCliPlus.buildWatch.staticServerCommand - Build (
Ctrl+Shift+A B): select a project and runng build(configuration controlled byangularCliPlus.build.configuration) - Build Watch (
Ctrl+Shift+A W): same as build but adds--watch(configuration controlled byangularCliPlus.watch.configuration) - Test (
Ctrl+Shift+A T): select a project, all projects at once, or the.spec.tsfile you have open - Restart Serve (
Ctrl+Shift+A R): restart any activeng serve,ng build --watch, Storybook, or static server terminal; if a debug session is attached it is stopped first and re-attached after the restart - Lint (
Ctrl+Shift+A L): select a project and runng lint - Update (
Ctrl+Shift+A U): checks for available package updates, shows a multi-select list, then runsng update; offers--forceon failure - Close Terminals (
Ctrl+Shift+A C): opens a searchable multi-select QuickPick of all extension terminals; each entry shows the terminal name and state (running,terminated,errored); use the select-all checkbox or search to filter, then confirm to close the selected terminals
The extension supports attaching a browser debugger to any dev server it starts. Configure the browser with angularCliPlus.debug.browser:
| Value | Browser | Notes |
|---|---|---|
chrome |
Google Chrome | Built-in, no extra extension needed |
edge |
Microsoft Edge | Built-in, no extra extension needed |
brave |
Brave | Auto-detected from standard install paths |
opera |
Opera | Auto-detected from standard install paths |
opera-gx |
Opera GX | Auto-detected from standard install paths |
firefox |
Firefox | Requires the "Debugger for Firefox" VS Code extension |
safari |
Safari | Requires the "Safari Debugger" VS Code extension; macOS only |
For a browser not in the list, or for a non-standard install path, set angularCliPlus.debug.browserExecutablePath to the full path of the browser executable. Any Chromium-based browser (Vivaldi, Arc, etc.) works this way.
Run Angular CLI Plus: npm: Install or Angular CLI Plus: npm: Clean Install from the Command Palette. Output is streamed to the Angular CLI Plus: npm output channel. The extension also automatically prompts you to run npm install when it detects missing or outdated packages on startup or after a git branch switch.
Make sure the workspace contains an angular.json file. The extension activates automatically when VS Code opens.
- Verify the selected browser is installed. Brave, Opera, and Opera GX require installation at the standard path; set
angularCliPlus.debug.browserExecutablePathfor non-standard locations. - For Firefox, install the Debugger for Firefox VS Code extension.
- For Safari, install the Safari Debugger VS Code extension and use macOS.
- Toggle
angularCliPlus.checkDependencies.enabledin VS Code settings. - The check fires on startup, on every
git checkout(branch switch), and wheneverpackage.jsonis saved. - Diagnostic logs are available in the Angular CLI Plus: diagnostics output channel (
View › Output, then select the channel from the dropdown).
- Ensure Node.js and the Angular CLI are on your
PATH. Restart VS Code after installing them. - The Angular CLI Plus: npm output channel shows the full output of every npm operation.
Commands containing ; rm, ; del, ; format, ; mkfs, or ; dd are blocked as a safety measure. Use a plain package-manager invocation (e.g. pnpm install --frozen-lockfile).
- Node.js and npm must be installed
- Angular CLI must be installed in your project or globally (
@angular/cli) - Your workspace must be an Angular project
This extension contributes the following settings:
angularCliPlus.component.standalone: Whether generated components should be standalone (default:true)angularCliPlus.component.skipTests: Skip creating spec.ts test files (default:false)angularCliPlus.component.inlineStyle: Include styles inline in the component.ts file (default:false)angularCliPlus.component.inlineTemplate: Include template inline in the component.ts file (default:false)angularCliPlus.component.style: The file extension or preprocessor to use (css,scss,sass,less,none) (default:css)angularCliPlus.component.changeDetection: The change detection strategy (Default,OnPush) (default:Default)angularCliPlus.component.flat: Create files at the top level of the current folder (default:false)
angularCliPlus.service.skipTests: Skip creating spec.ts test files (default:false)angularCliPlus.service.flat: Create files at the top level of the current folder (default:true)
angularCliPlus.module.flat: Create files at the top level of the current folder (default:false)angularCliPlus.module.routing: Create a routing module (default:false)
angularCliPlus.directive.standalone: Whether generated directives should be standalone (default:true)angularCliPlus.directive.skipTests: Skip creating spec.ts test files (default:false)angularCliPlus.directive.flat: Create files at the top level of the current folder (default:true)
angularCliPlus.pipe.standalone: Whether generated pipes should be standalone (default:true)angularCliPlus.pipe.skipTests: Skip creating spec.ts test files (default:false)angularCliPlus.pipe.flat: Create files at the top level of the current folder (default:true)
angularCliPlus.guard.functional: Specifies whether to generate a guard as a function (default:true)angularCliPlus.guard.skipTests: Skip creating spec.ts test files (default:false)angularCliPlus.guard.flat: Create files at the top level of the current folder (default:true)
angularCliPlus.interceptor.functional: Creates the interceptor as a HttpInterceptorFn (default:true)angularCliPlus.interceptor.skipTests: Skip creating spec.ts test files (default:false)angularCliPlus.interceptor.flat: Create files at the top level of the current folder (default:true)
angularCliPlus.class.skipTests: Skip creating spec.ts test files (default:false)
angularCliPlus.resolver.functional: Creates the resolver as a ResolveFn (default:true)angularCliPlus.resolver.skipTests: Skip creating spec.ts test files (default:false)angularCliPlus.resolver.flat: Create files at the top level of the current folder (default:true)
angularCliPlus.debug.browser: Browser to use when launching a debug session (chrome,edge,brave,opera,opera-gx,firefox,safari) (default:chrome)angularCliPlus.debug.browserExecutablePath: Optional path to the browser executable; overrides automatic detection (default:"")
angularCliPlus.build.configuration: Configuration flag passed tong build(default,production,development) (default:production)angularCliPlus.watch.configuration: Configuration flag passed tong build --watch(default,inherit,production,development) —inheritcopies the value fromangularCliPlus.build.configuration(default:development)
angularCliPlus.test.watch: Runng testin watch mode (default:false)angularCliPlus.test.ui: Enable the Vitest UI for interactive test execution — only available for the Vitest runner (default:false)
angularCliPlus.storybook.port: Port Storybook runs on;0means auto-detect fromangular.jsonor use the default6006(default:0)
angularCliPlus.buildWatch.servePort: Port the static file server listens on during a Debug Build Watch session (default:4201)angularCliPlus.buildWatch.staticServerCommand: Command used to serve the build output; use{outputPath}and{port}as placeholders (default:npx serve {outputPath} -l {port})
angularCliPlus.checkDependencies.enabled: Check if npm dependencies are installed and matchpackage.jsonon startup and on git branch changes (default:true)angularCliPlus.checkToolVersions.enabled: Check if Node.js, npm, yarn, and pnpm versions satisfy theenginesfield inpackage.jsonon startup (default:true)
angularCliPlus.update.allowDirty: Pass--allow-dirtytong update, allowing updates when the working tree has uncommitted changes (default:false)
angularCliPlus.npm.installCommand: Custom command used by npm: Install (e.g.yarn install,pnpm install). Leave empty to use the defaultnpm installwith automatic clean/force fallbacks (default:"")angularCliPlus.npm.cleanInstallCommand: Custom command used by npm: Clean Install (e.g.yarn install --frozen-lockfile). Leave empty to use the default behaviour — removesnode_modulesandpackage-lock.jsonthen runsnpm install(default:"")