A development dependency is a package listed in package.json for building, testing, serving, or otherwise developing an application, rather than for the finished application itself. NPM installs these packages with the project’s dependency tree in node_modules. section 9.2.2
Use development dependencies to separate development tooling from runtime requirements:
- Keep application runtime packages in dependencies and development-only packages in devDependencies. section 9.2.2
- Install a package into devDependencies with npm install package@version --save-dev. section 9.2.2
- Expect Angular tooling, compilers, type definitions, test runners, and browser launchers in devDependencies. section 9.2.2
Angular development tooling
An Angular project can list @angular/cli, @angular-devkit/build-angular, @angular/compiler-cli, TypeScript, Jasmine, Karma, and related launchers under devDependencies. Scripts then expose commands such as start, build, watch, and test for development workflows. section 9.2.2
...
"devDependencies": {
"@angular-devkit/build-angular": "^16.0.0",
"@angular/cli": "~16.0.0",
"@angular/compiler-cli": "^16.0.0",
"@types/jasmine": "~4.3.0",
"jasmine-core": "~4.6.0",
"karma": "~6.4.0",
"karma-chrome-launcher": "~3.2.0",
"karma-coverage": "~2.2.0",
"karma-jasmine": "~5.1.0",
"karma-jasmine-html-reporter": "~2.0.0",
"typescript": "~5.0.2"
}
...
Inspect a representative devDependencies listing containing Angular build tools, compiler support, TypeScript, and testing packages. section 9.2.2
Deployment configuration
A deployment-specific package manifest can place production HTTP/HTTPS server tools in devDependencies when the application has already been incorporated into prerendered files. Its start script launches the production server. section 8.6.2



