perf(ci): P1级Web构建缓存优化 - tsc增量 + Vite构建缓存 #348

Merged
xiaoxia merged 2 commits from perf/web-build-cache-p1 into develop 2026-07-15 10:52:39 +08:00
Owner

优化内容

1. TypeScript增量类型检查

tsc 改为 tsc --incremental --tsBuildInfoFile node_modules/.tsbuildinfo

  • 将类型检查结果缓存在 node_modules/.tsbuildinfo
  • 下次构建时只重新检查改动的文件
  • 缓存文件随 npm docker volume 持久化,跨run复用

预期收益:小改动PR类型检查从~25s→~5s(-80%)

2. Vite持久化构建缓存

vite.config.ts 中新增 build.cache: true

  • Vite将模块transform结果缓存到 node_modules/.vite/build-cache/
  • 未改动的模块直接从缓存读取,跳过transform
  • 同样随 npm volume 持久化

预期收益:小改动PR构建从~90s→40-60s(-3050%)

整体预期

Build frontend assets 步骤从 ~120s → 50-70s(-4058%)

改动文件

  • apps/web/vite.config.ts - 启用 build.cache
  • .gitea/workflows/ci-cd.yml - staging/production web构建都加了--incremental

验证方式

  1. 首次构建:基线耗时(生成缓存)
  2. 第二次构建(无代码改动):验证缓存命中,耗时应明显下降
  3. 小改动构建:验证部分缓存命中

风险

  • 极低。增量构建是官方稳定特性,缓存不一致时删除node_modules即可恢复
## 优化内容 ### 1. TypeScript增量类型检查 `tsc` 改为 `tsc --incremental --tsBuildInfoFile node_modules/.tsbuildinfo` - 将类型检查结果缓存在 `node_modules/.tsbuildinfo` - 下次构建时只重新检查改动的文件 - 缓存文件随 npm docker volume 持久化,跨run复用 **预期收益**:小改动PR类型检查从~25s→~5s(-80%) ### 2. Vite持久化构建缓存 `vite.config.ts` 中新增 `build.cache: true` - Vite将模块transform结果缓存到 `node_modules/.vite/build-cache/` - 未改动的模块直接从缓存读取,跳过transform - 同样随 npm volume 持久化 **预期收益**:小改动PR构建从~90s→~40-60s(-30~50%) ### 整体预期 Build frontend assets 步骤从 ~120s → ~50-70s(-40~58%) ## 改动文件 - `apps/web/vite.config.ts` - 启用 build.cache - `.gitea/workflows/ci-cd.yml` - staging/production web构建都加了--incremental ## 验证方式 1. 首次构建:基线耗时(生成缓存) 2. 第二次构建(无代码改动):验证缓存命中,耗时应明显下降 3. 小改动构建:验证部分缓存命中 ## 风险 - 极低。增量构建是官方稳定特性,缓存不一致时删除node_modules即可恢复
xiaoxia added 2 commits 2026-07-15 10:44:36 +08:00
perf(ci): Web构建启用TypeScript增量类型检查,节省重复构建时间
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 53s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m30s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 2m24s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m21s
441d12b242
auto-approve-bot approved these changes 2026-07-15 10:48:55 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia merged commit 68fe8aabd5 into develop 2026-07-15 10:52:39 +08:00
Sign in to join this conversation.