angular / angular/angular-cli

Add configurable size limit for persistent build cache with LRU eviction

Abierto
#33,320 4 comentarios 0 reacciones 0 asignados Ver en GitHub
area: @angular/cli gemini-triaged needs: more info
Lenguaje dominante
TypeScript
Estrellas
27k
Forks
11.8k
Merge medio
14 h 23 min
PR fusionados (30 d)
162

Descripción

### 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.

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza con la caché persistente utilizada por los comandos `build` y `serve`, y compárala con el punto de entrada existente `ng cache clean` para `.angular/cache`. Define cómo se configura y se mide `cli.cache.maxSize` y, a continuación, verifica que las entradas menos recientemente utilizadas se desalojen una vez superado el límite configurado.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
angular, typescript
Área
build-system, cli
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Activo
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.