A package manager resolves a project's dependency hierarchy, downloads the required packages, and installs them in the node_modules folder. The initial package list lives in package.json, separated into runtime dependencies and development-only devDependencies. section 9.2.2
...
"dependencies": {
"@angular/animations": "^16.0.0",
"@angular/common": "^16.0.0",
"@angular/compiler": "^16.0.0",
"@angular/core": "^16.0.0",
"@angular/forms": "^16.0.0",
"@angular/platform-browser": "^16.0.0",
"@angular/platform-browser-dynamic": "^16.0.0",
"@angular/router": "^16.0.0",
"rxjs": "~7.8.0",
"tslib": "^2.3.0",
"zone.js": "~0.13.0"
},
...
A package.json excerpt shows Angular runtime packages alongside RxJS, tslib, and zone.js, with version constraints. section 9.2.2



