ngx-stats is a CLI tool that analyzes Angular projects. It counts the number of modules, components, directives, pipes, and services — including distinctions between:
- Standalone vs. non-standalone declarations
- OnPush vs. Default change detection
This utility helps developers understand the structure and architectural patterns of their Angular applications.
Install globally:
npm i -g ngx-stats
In any Angular project directory:
ngx-stats

ngx-stats --path path/to/angular/project
or shorthand:
ngx-stats -p ./apps/admin
ngx-stats --json
{
"modules": 0,
"services": 0,
"components": {
"total": 4,
"standalone": 4,
"notStandalone": 0,
"onPush": 2,
"default": 2
},
"directives": {
"total": 0,
"standalone": 0,
"notStandalone": 0
},
"pipes": {
"total": 0,
"standalone": 0,
"notStandalone": 0
}
}
Angular v19+ treats components/directives/pipes as standalone by default.
To use legacy detection logic (standalone: true
), add:
ngx-stats --legacy
or:
ngx-stats -l
The following are excluded by default:
node_modules
dist
build
cache
.nx
.angular
- Any directory that starts with a
.
- Files ending in
.stories.ts
- Files ending in
.spec.ts
- Files ending in
.d.ts
ngx-stats --help
Option | Alias | Description |
---|---|---|
--path |
-p |
Specify target directory to scan |
--json |
-j |
Output result as JSON |
--legacy |
-l |
Use legacy detection logic (Angular v14–v18: looks for standalone: true ) |
--verbose |
-v |
Print file paths of: NgModules, non-standalone declarations, and non-OnPush |
--help |
-h |
Show usage info |