Skip to content
2026-09-28QUALITY GATES约 12 分钟阅读

VERIFY BEFORE SHIP

变更被更稳定的自动化验证覆盖,模板升级的回归风险随之降低。

  • Vite
  • React
  • Vue
  • Next.js
  • Nuxt
  • SSR
  • Spring Boot
  • Vitest

2026-09-28 ​

更新概览 ​

  • React SPA 模板:13 项依赖升级(Vite 8.3.1、ESLint 10.11.0、Vitest 5.0.2、orval 8.38.0 等),全部为 patch/minor。
  • Vue 3 SPA 模板:16 项升级,含 @vueuse/core 14.4.0 → 15.0.0 大版本(经官方 release notes 核对,模板仅用 reactiveOmit/useVModel,不在破坏点清单内)。
  • React SSR 模板:14 项升级(Next.js 16.3.6 等);ESLint 10 候选被拒——eslint-config-next@16.3.6 仍拉取 eslint-plugin-react@7.37.5,维持 ESLint 9 兼容线。
  • Vue 3 SSR 模板:18 项升级(含 @vueuse/core 15.0.0);h3 2.x RC 候选被拒。
  • Spring Boot 后端模板:archunit-junit5 1.5.1、spotless 3.10.3、Maven Wrapper 3.9.16;Spring Boot parent 4.1.1 仍为 4.1 线最新稳定版,本次无 BOM 层变化。
  • 供应链:pnpm 信任策略(no-downgrade)拦截 why-is-node-running@3.2.2;tarball 逐行审查后确认良性,四套前端 trustPolicyExclude 加入该版本(沿用 million/semver 既有先例)。
  • 本次验证:四套前端 typecheck/lint/test/coverage/组件守卫/build/E2E 全部通过;后端生成项目 mvnw clean verify 通过;cwa-stack 78 个测试通过。

React SPA 模板 (vite_react_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
vite^8.3.0^8.3.1patch构建内核补丁
vitest / @vitest/coverage-v8 / @vitest/ui^5.0.1^5.0.2patch测试栈补丁
eslint^10.10.0^10.11.0minor代码规范
@eslint-react/eslint-plugin^5.19.1^5.20.8minorReact 专项规则
orval^8.34.0^8.38.0minorOpenAPI 契约生成
lucide-react^1.46.0^1.48.0minor图标库
jsdom^30.0.1^30.1.1minor测试环境
lint-staged^17.5.1^17.6.0minor提交钩子
@types/node^24.13.5^24.19.0patchNode 24 线类型(拒绝 26.x,见下)
@vitejs/devtools / devtools-kit^0.7.5^0.7.6patch调试工具

升级内容说明 ​

全部为 registry patch/minor,无 API 变化。pnpm peers check 通过,安装无 peer/engine 警告。

模板影响 ​

README/AGENTS 基线行同步(Vite 8.3.1、ESLint 10.11.0、lucide-react 1.48.0)。锁文件随安装更新。

Vue 3 SPA 模板 (vite_vue3_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
@vueuse/core^14.4.0^15.0.0major组合式工具库大版本
vue^3.5.42^3.5.43patch框架补丁
reka-ui^2.10.4^2.10.5patch无头组件
@lucide/vue^1.46.0^1.48.0minor图标库
oxlint^1.83.0^1.85.0minorLint 引擎
oxfmt^0.68.0^0.70.0minor格式化
orval^8.34.0^8.38.0minor契约生成
vite / vitest 系列8.3.0 / 5.0.18.3.1 / 5.0.2patch构建与测试
jsdom / lint-staged / @types/node—30.1.1 / 17.6.0 / 24.19.0minor/patch测试与工程化

升级内容说明 ​

@vueuse/core 15.0.0 的官方破坏点:移除 templateRef、放弃 Node 20、移除废弃的 timer options(改 scheduler)、useThrottleFn 默认 trailing 改为 true、useEventSource 处理 SSE message 类型、useIDBKeyval 跨 tab 同步。模板源码仅在 shadcn-vue 组件中使用 reactiveOmit 与 useVModel,全部不在破坏点清单内,属安全大版本升级。

模板影响 ​

README/AGENTS 基线行同步(Vite 8.3.1、Vue 3.5.43)。锁文件更新。

React SSR 模板 (vite_react_ssr_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
next^16.3.5^16.3.6patchSSR 框架补丁
eslint-config-next^16.3.5^16.3.6patch官方 Lint 配置
lucide-react^1.46.0^1.48.0minor图标库
sass^1.104.1^1.105.0minor样式编译
orval^8.34.0^8.38.0minor契约生成
oxfmt^0.68.0^0.70.0minor格式化
@commitlint/cli / config-conventional^21.2.2^21.2.3patch提交规范
vitest 系列^5.0.1^5.0.2patch测试栈
jsdom / lint-staged / @types/node—30.1.1 / 17.6.0 / 24.19.0minor/patch测试与工程化

升级内容说明 ​

ESLint 10.11.0 候选被拒绝:虽然 eslint-config-next@16.3.6 声明的 peer 范围(>=9.0.0)允许 ESLint 10,但其实际依赖的 eslint-plugin-react@7.37.5 peer 止于 ^9.7,且 2026-09-17 本地已验证其在 ESLint 10 下 detectReactVersion 崩溃;本次复核确认 16.3.6 仍拉取同一版本。ESLint 维持 9.39.5(9.x 线最新)。

需要说明:ESLint 9 线现已被上游标记为 "no longer supported",这是一个已知的、被接受的临时风险,AGENTS.md 已更新复验记录(2026-09-28),待 eslint-plugin-react 发布 ESLint 10 支持后解除。

模板影响 ​

README 版本行同步(Next.js 16.3.6、lucide-react 1.48.0、oxfmt 0.70.0,ESLint 9 兼容线说明补充上游支持状态)。AGENTS.md 更新复验日期与结论。锁文件更新。

Vue 3 SSR 模板 (vite_vue3_ssr_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
@vueuse/core^14.4.0^15.0.0major同 Vue 3 SPA,破坏点不涉及模板用法
vue^3.5.42^3.5.43patch框架补丁
reka-ui^2.10.4^2.10.5patch无头组件
@lucide/vue^1.46.0^1.48.0minor图标库
eslint^10.10.0^10.11.0minor代码规范
@typescript-eslint/parser^8.70.0^8.70.1patchVue/TS 解析
oxlint / oxfmt1.83.0 / 0.68.01.85.0 / 0.70.0minorOx 工具链
sass^1.104.1^1.105.0minor样式编译
orval^8.34.0^8.38.0minor契约生成
@commitlint/cli / config-conventional^21.2.2^21.2.3patch提交规范
vitest 系列 / jsdom / lint-staged / @types/node—5.0.2 / 30.1.1 / 17.6.0 / 24.19.0patch/minor测试与工程化

升级内容说明 ​

Nuxt 保持 4.5.2(registry 最新)、@nuxt/test-utils 4.3.2、@pinia/nuxt 1.0.2 均无更新。h3 2.0.1-rc.32 候选被拒:RC 预发布版本,且 h3 由 Nuxt 自身管理,模板显式声明保留 1.15.11。

模板影响 ​

README 版本行同步(Vue 3.5.43、@lucide/vue 1.48.0、Oxlint 1.85.0、ESLint 10.11.0、oxfmt 0.70.0)。锁文件更新。SSR 边界约定(.client 插件、onMounted/import.meta.client 保护、服务端密钥隔离)未受影响。

Spring Boot 后端模板 (springboot-template) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
archunit-junit51.5.01.5.1patch架构门禁(Maven Central 最新)
spotless-maven-plugin3.10.23.10.3patch格式化门禁
Maven Wrapper(distributionUrl)3.9.113.9.16toolchainMaven 发行版补丁

升级内容说明 ​

Spring Boot parent 保持 4.1.1——4.1 线最新稳定版;4.2.0-M2 为里程碑(milestone),模板不采用预发布线。springdoc-openapi 3.1.1、JaCoCo 0.8.15 均已是各自最新版,本次无变化。Docker 基础镜像(eclipse-temurin:25)、compose 镜像(mysql:8.4、redis:8-alpine)、CI java-version 25 均无需变化。

模板影响 ​

README 版本原则行同步(archunit 1.5.1)。占位符约定(//)与生成流程不受影响;管理端口 9090 与业务端口 8080 分离、readiness 聚合 db+redis、opaque token 会话模型等文档事实保持原样。

供应链:why-is-node-running 信任降级处置 ​

升级 Vitest 5.0.2 时,pnpm 信任策略(trustPolicy: no-downgrade)拦截其依赖 why-is-node-running@3.2.2:该版本(2025-01-08 发布)缺失 provenance attestation,而更早版本均有。

处置过程:

  1. 下载 3.2.1 与 3.2.2 两个 tarball 逐行比对:差异仅为 WeakRef 内存泄漏修复与 V8 stack trace API 弃用适配(getFileName() → prepareStackTrace 收集),无网络行为、无混淆、无可疑代码。
  2. 结论为良性维护版本,按模板既有先例(million@3.1.11、semver@6.3.1)加入四套前端 pnpm-workspace.yaml 的 trustPolicyExclude。

不阻塞模板使用;后续若发布带 provenance 的 3.2.3+,可从白名单移除该条目。

未采用的候选版本 ​

候选拒绝原因
typescript 7.0.2(全部前端)@typescript-eslint/parser@8.70.1 peer 要求 <6.1.0;TS 7(Go 原生编译器)生态未就绪,保持 6.0.3(6.x 线最新)
@types/node 26.6.3(全部前端)与 engines.node >=24.11.0 <25 不匹配,保持 24 线最新 24.19.0
eslint 10.11.0(React SSR)eslint-plugin-react@7.37.5(经 eslint-config-next 16.3.6 引入)在 ESLint 10 下崩溃,维持 9.x 兼容线
h3 2.0.1-rc.32(Vue SSR)RC 预发布且由 Nuxt 管理,保持 1.15.11
Spring Boot 4.2.0-M2里程碑版本,模板采用稳定线 4.1.1

文档与锁文件 ​

  • 四套前端 README/AGENTS 的版本基线行同步为升级后事实。
  • React SSR AGENTS.md 更新 ESLint 兼容线复验记录(2026-09-28 复核结论 + 上游支持状态说明)。
  • 四套前端 pnpm-workspace.yaml 各增加一条 trustPolicyExclude。
  • pnpm-lock.yaml 四套全部随 pnpm install 更新,未重建、未删除。
  • cwa-docs core 文档同步 11 处版本事实(React/Vue3 模板的 Vite 与 Vue 版本、ReactSSR 的 Next.js 版本、Vue3SSR 的 Vue 版本)。
  • springboot-template README 版本原则行同步 archunit 1.5.1。

验证结果 ​

验证项结果
React SPA:typecheck / lint / peers check通过
React SPA:test / coverage / 组件守卫 / build / E2E43/43 通过;覆盖率门禁通过;19 组件守卫通过;构建通过;E2E 3/3
Vue 3 SPA:typecheck / lint / peers check通过
Vue 3 SPA:test / coverage / 组件守卫 / build / E2E32/32 通过;覆盖率门禁通过;19 组件守卫通过;构建通过;E2E 3/3
React SSR:typecheck / lint通过
React SSR:test / coverage / 组件守卫 / build / E2E29/29 通过;覆盖率门禁通过;13 组件守卫通过;构建通过;E2E 4/4(生产 SSR + hydration 冒烟)
Vue 3 SSR:typecheck / lint通过
Vue 3 SSR:test / coverage / 组件守卫 / build / E2E25/25 通过;覆盖率门禁通过;27 组件守卫通过;构建通过;E2E 4/4(生产 SSR + hydration 冒烟)
后端:generate.sh 生成 + ./mvnw clean verify通过:98/98(Testcontainers 真实 MySQL/Redis、JaCoCo "All coverage checks have been met"、ArchUnit);本地执行带两处环境适配,见注意事项
cwa-stack:--version / --help / list / 单元测试78/78 通过;五个模板标识与四个预设齐全
cwa-docs:npm run build通过

cwa-stack —— 开箱即用,极速响应,让开发更简单、更高效