The Angular repository located at https://github.com/angular/angular serves as the primary monorepo for the Angular web framework package.json1-18 It contains the complete source code for core framework runtimes, compiler infrastructure, developer tools, command-line interfaces, official documentation platforms, and integration test suites. This page provides a high-level technical orientation to the repository architecture, monorepo layout, build systems, and key subsystem entry points.
The Angular monorepo is managed using pnpm workspaces package.json9-13 pnpm-lock.yaml4-12 and orchestrated via Bazel (MODULE.bazel) MODULE.bazel1-5 The codebase partitions publishable libraries, internal tooling, documentation, and validation harnesses into distinct workspace packages and directories.
Figure 1: High-level directory topology bridging repository layout to physical package paths.
Sources: package.json1-18 pnpm-lock.yaml4-12 MODULE.bazel1-5
| Directory Path | Architectural Purpose | Key Code Entities / Modules |
|---|---|---|
packages/core/ | Core framework runtime, change detection, DI, signals | ApplicationRef, Injector, WritableSignal, LView package.json69 |
packages/compiler/ | Template parsing, IR generation, rendering code generation | NgCompiler, TemplateParser, R3Ast package.json67 |
packages/compiler-cli/ | TypeScript integration, ngtsc, diagnostic checking | NgCompilerHost, TypeCheckBlock package.json68 |
packages/common/ | Common directives, pipes, HTTP client infrastructure | NgIf, NgFor, HttpClient package.json66 |
packages/router/ | Single-page application routing and state management | Router, RouterOutlet, Routes package.json78 |
packages/forms/ | Template-driven and reactive form controls | FormControl, FormGroup, AbstractControl package.json71 |
packages/platform-browser/ | Browser DOM rendering and platform initialization | BrowserModule, Title, Meta package.json75 |
packages/zone.js/ | Asynchronous operation interception for change detection | Zone, ZoneDelegate package.json133 |
adev/ | Angular.dev documentation site & interactive tutorials | Standalone components, API reference gen adev/package.json1-50 |
devtools/ | Chrome/Firefox extension for debugging Angular apps | Component tree inspection, injector tree visualizer devtools/package.json1-14 |
Sources: package.json66-133 MODULE.bazel80-112
Angular packages are structured in a layered dependency hierarchy, where foundational primitives provide reactive and scheduling capabilities, core runtime layers implement component lifecycle and rendering, and platform adapters target browsers, servers, or web workers.
Figure 2: Package dependency graph mapping framework runtime modules to their source locations.
Sources: package.json57-81 pnpm-lock.yaml115-187
Workspace dependencies across packages are wired via workspace:* specifiers within package manifests, ensuring local development links directly to source packages under packages/ rather than external registry versions package.json60-81
Sources: package.json60-81 adev/package.json1-25
Angular uses a hybrid toolchain consisting of pnpm for workspace dependency management package.json9-13 and Bazel for high-performance incremental builds, test execution, and remote caching MODULE.bazel1-120
pnpm version 12.3.4 package.json9-1324.21.0 managed through Bazel toolchain integrations MODULE.bazel49-60rules_nodejs, aspect_rules_ts, aspect_rules_js, rules_angular) manage compilation, bundling, and testing pipelines MODULE.bazel8-18| Script Name | Command Execution | Description |
|---|---|---|
pnpm build | node scripts/build/build-packages-dist.mts | Compiles and builds all Angular distribution packages package.json22 |
pnpm test | bazelisk test | Executes test suites across packages via Bazel package.json23 |
pnpm test:ci | bazelisk test -- //... -//integration/... | Runs full CI test suite excluding integration and bench targets package.json24 |
pnpm public-api:check | node goldens/public-api/manage.js test | Validates public API surface against golden files package.json29 |
pnpm symbol-extractor:check | node tools/symbol-extractor/... | Inspects symbol outputs to track bundle contents package.json31 |
pnpm ts-circular-deps:check | ng-dev ts-circular-deps check | Verifies absence of circular dependencies in source code package.json33 |
Sources: package.json19-54 .github/workflows/ci.yml19-83
The Angular repository incorporates cutting-edge reactivity and rendering systems designed for high performance and minimal runtime overhead:
WritableSignal, computed properties, linkedSignal, and reactive effect graphs located in packages/core/src/signals/ CHANGELOG.md1-35Zone.js, relying on ChangeDetectionScheduler and signal invalidation hooks.packages/platform-server/ and packages/core/src/hydration/ CHANGELOG.md1-35Sources: CHANGELOG.md1-115 adev/src/content/reference/roadmap.md1-100
To prevent breaking changes across releases, Angular enforces rigorous public API validation via golden files stored in the goldens/ directory.
public-api:check task compares exported symbols against registered golden reference files package.json29pnpm public-api:update to refresh the golden references package.json30Sources: package.json29-32
Refresh this wiki
This wiki was recently refreshed. Please wait 4 days to refresh again.