Skip to content
SunnyWriteUps
Go back

Unlocking the `package.json` A Guide to Our Angular Architecture

Edit page

Core Key-Value Pairs

At its most basic level, the package.json is a standard JSON object containing several standardized fields:

What Packages Are We Utilizing Currently?

Modern Angular development has shifted heavily toward streamlined performance, standalone components, and AI integration. With the release of Angular 22 in May 2026, the ecosystem has solidified around features like zoneless architecture and Signal-driven reactivity. Here is a breakdown of what is currently powering the project architecture.

Production dependencies

These are the heavy lifters deployed directly to Vercel:

Development devDependencies

These packages ensure code quality, optimal builds, and robust testing before deployment:

Tying It All Together with Scripts

The scripts block orchestrates how all these packages interact. A typical setup for our workflow looks like this:

{
  "name": "Demo",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "deploy": "vercel build --prod"
  },
  "private": true,
  "dependencies": {
    "@angular-devkit/build-angular": "^21.2.11",
    "@angular/animations": "^21.2.13",
    "@angular/common": "^21.2.13",
    "@angular/compiler": "^21.2.13",
    "@angular/core": "^21.2.13",
    "@angular/forms": "^21.2.13",
    "@angular/http": "^7.2.16",
    "@angular/platform-browser": "^21.2.13",
    "@angular/platform-browser-dynamic": "^21.2.13",
    "@angular/router": "^21.2.13",
    "core-js": "^3.49.0",
    "font-awesome": "^4.7.0",
    "moment": "^2.30.1",
    "rxjs": "^7.8.2",
    "zone.js": "^0.16.2"
  },
  "devDependencies": {
    "@angular/cli": "~21.2.11",
    "@angular/compiler-cli": "^21.2.13",
    "@angular/language-service": "^21.2.13",
    "@types/jasmine": "~6.0.0",
    "@types/jasminewd2": "~2.0.13",
    "@types/node": "~25.9.0",
    "codelyzer": "~6.0.2",
    "jasmine-core": "~6.2.0",
    "jasmine-spec-reporter": "~7.0.0",
    "karma": "~6.4.4",
    "karma-chrome-launcher": "~3.2.0",
    "karma-coverage-istanbul-reporter": "~3.0.3",
    "karma-jasmine": "~5.1.0",
    "karma-jasmine-html-reporter": "^2.2.0",
    "protractor": "~7.0.0",
    "ts-node": "~10.9.2",
    "tslint": "~6.1.3",
    "typescript": "~6.0.3"
  }
}

When npm run deploy is executed, the package.json signals Vercel to grab the esbuild compiler from devDependencies, compile the dependencies (like @angular/ssr and openai), and output the highly optimized code-for-next-generation artifact.

Understanding the package.json isn’t just about managing version numbers; it is about seeing the architectural blueprint of the entire application at a glance. It maps out exactly how our state, UI, server-rendering, and AI integrations come together.


Edit page
Share this post on:

Previous Post
The Art of Site Reliability Engineering (SRE) Keeping Systems Always On
Next Post
Angular component dependency graph