angular / angular/angular-cli

Add configurable size limit for persistent build cache with LRU eviction

Offen
#33,320 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area: @angular/cli gemini-triaged needs: more info
Vorherrschende Sprache
TypeScript
Sterne
27k
Forks
11.8k
Ø Merge
14 Std. 23 Min.
Gemergte PRs (30 T.)
162

Beschreibung

### Command

build, serve

### Description

The Angular CLI persistent disk cache (`.angular/cache`) grows without bounds. On large projects, a single checkout accumulates tens of gigabytes of cached build artifacts. In our case, a single checkout reached **29 GB**.

This was previously raised in #25116 and closed as not feasible with Webpack. Since Angular 17+, the build system uses esbuild, so the original constraint no longer applies.

### Describe the solution you'd like

Add a configurable size cap (e.g., `cli.cache.maxSize`) with LRU eviction when the limit is reached. This is a common pattern in build tooling — Turborepo, Gradle, and most browsers' HTTP caches all implement bounded persistent caches.

Example configuration:
```json
"cli": {
"cache": {
"enabled": true,
"maxSize": "2GB"
}
}
```

When the cache exceeds `maxSize`, the oldest/least-recently-used entries are evicted.

### Describe alternatives you've considered

- Periodically running `ng cache clean` or manually deleting `.angular/cache` — works but is a manual maintenance burden, especially for developers unaware the cache is growing.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit dem persistenten Cache, der von den Befehlen `build` und `serve` verwendet wird, und vergleiche ihn mit dem vorhandenen Einstiegspunkt `ng cache clean` für `.angular/cache`. Lege fest, wie `cli.cache.maxSize` konfiguriert und gemessen wird, und überprüfe anschließend, dass die am längsten nicht verwendeten Einträge entfernt werden, sobald das konfigurierte Limit überschritten wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
angular, typescript
Bereich
build-system, cli
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Aktiv
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.