angular / angular/angular-cli

Add configurable size limit for persistent build cache with LRU eviction

未关闭
#33,320 4 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
area: @angular/cli gemini-triaged needs: more info
主要语言
TypeScript
星标
27k
派生
11.8k
平均合并
14 小时 23 分钟
30 天内合并 PR
162

描述

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

贡献指南

打开贡献指南

调研方向

从 `build` 和 `serve` 命令使用的持久缓存入手,并将其与 `.angular/cache` 现有的 `ng cache clean` 入口进行比较。定义如何配置和测量 `cli.cache.maxSize`,然后验证在超过配置的上限后,最近最少使用的条目会被逐出。

由索引模型根据 Issue 内容生成。

评估

技术栈
angular, typescript
领域
build-system, cli
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
活跃
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。