Skip to content
2026-08-25ARCHITECTURE约 13 分钟阅读

CLIENT / SERVER SYSTEM

脚手架从 SPA 扩展到客户端与服务端协同的企业级应用架构。

  • Vite
  • Rolldown
  • Oxc
  • React
  • Vue
  • Pinia
  • Zustand
  • Next.js

2026-08-25 ​

更新概览 ​

  • React SPA 模板:升级 Vite 8.2.2、Vite React 6.1、ESLint 10.9、React Grab 0.2 及 UI、状态和测试依赖。
  • Vue 3 SPA 模板:升级 Vite 8.2.2、Vue 3.5.41、Pinia 4.0.3、Oxc 工具链及 UI、测试依赖。
  • React SSR 模板:升级 Next.js 与 eslint-config-next 16.3.2,以及 UI、测试、样式和提交工具。
  • Vue 3 SSR 模板:升级 Nuxt 4.5.2,并采用通过生产 SSR 验证的 Pinia 4.0.3 与 @pinia/nuxt 1.0.2 组合。
  • 本次验证:四套模板均通过冻结锁文件安装、peer 检查、类型检查、lint、单测、覆盖率、组件守卫、生产构建和 Playwright E2E。

React SPA 模板 (vite_react_init) ​

依赖版本变更 ​

依赖或工具旧版本新版本类型影响说明
Vite8.2.08.2.2patch保持 Vite 8 与 Rolldown 构建基线,生产构建与 legacy 产物通过。
@vitejs/plugin-react6.0.56.1.0minorpeer 范围要求 Vite 8,当前组合通过 peer、类型与构建检查。
@vitejs/plugin-legacy8.2.28.2.3patch与 Vite 8.2.2 同步,现代与 legacy 双产物均成功生成。
ESLint / Antfu / eslint-react10.8.0 / 9.2.0 / 5.18.210.9.0 / 9.3.0 / 5.18.6minor/patchlint 零错误通过。
Lucide React / shadcn / Sonner1.28.0 / 4.16.1 / 2.0.71.33.0 / 4.19.0 / 2.0.8minor/patch现有 UI、组件和无障碍测试通过。
Day.js / Immer / Zustand / web-vitals1.11.21 / 11.1.15 / 5.0.14 / 6.0.11.11.23 / 11.1.18 / 5.0.15 / 6.1.1minor/patch状态、日期和性能监控基线更新,相关单测通过。
Vitest / coverage-v8 / UI4.1.104.1.11patch测试运行器与报告组件保持同版本。
jest-dom / user-event / React DOM 类型7.0.0 / 14.6.3 / 19.2.47.0.1 / 14.6.6 / 19.2.5patch40 项测试和类型检查通过。
Less / React Grab / React Refresh 插件4.8.1 / 0.1.50 / 0.5.34.9.0 / 0.2.0 / 0.5.4minor/major/patchReact Grab 仅用于开发辅助;插件加载、构建和 E2E 均通过。

升级内容说明 ​

  • Vite、React 插件和 legacy 插件按 peer 元数据组成兼容组合,未改变模板入口、路由或环境变量开关。
  • React Grab 0.2 是本模板唯一独立 major 变化;现有 Vite 配置无需迁移,生产构建和浏览器流程通过。
  • @vitejs/devtools 与 kit 保留 0.4.12,因为 Vite 8.2.2 的 peer 范围只接受 0.4 或 0.5,不接受当前 latest 0.6。

模板影响 ​

  • 认证、路由、性能监控和组件行为保持不变。
  • README 与 AGENTS 已同步 Vite 8.2.2 和 ESLint 10.9.0 基线。

Vue 3 SPA 模板 (vite_vue3_init) ​

依赖版本变更 ​

依赖或工具旧版本新版本类型影响说明
Vite / legacy 插件8.2.0 / 8.2.28.2.2 / 8.2.3patchVite 生产构建和 legacy 产物通过。
Vue / Pinia3.5.40 / 4.0.23.5.41 / 4.0.3patchComposition API、store 注册、单测和 E2E 通过。
Lucide Vue / reka-ui / shadcn-vue1.28.0 / 2.10.1 / 2.8.11.33.0 / 2.10.3 / 2.8.2minor/patch现有组件与无障碍测试通过。
web-vitals6.0.16.1.1minor性能监控工具测试通过。
Oxlint / oxfmt1.77.0 / 0.62.01.79.0 / 0.64.0minorlint 与格式工具更新,lint 零 warning。
Vitest / coverage-v8 / UI4.1.104.1.11patch测试运行器和覆盖率组件保持一致。
jest-dom / vue-tsc7.0.0 / 3.3.97.0.1 / 3.3.11patch29 项测试与 Vue 类型检查通过。

升级内容说明 ​

  • Vue、Pinia、Vite 和 vue-tsc 均留在当前兼容 major 线,未触及路由、store 或组件源码。
  • Vite DevTools 继续保留 0.4.12,原因与 React SPA 相同。

模板影响 ​

  • Composition API、路由、Pinia 持久化和客户端渲染边界保持不变。
  • README 与 AGENTS 已同步 Vite 8.2.2、Vue 3.5.41 和 Pinia 4.0.3。

React SSR 模板 (vite_react_ssr_init) ​

依赖版本变更 ​

依赖或工具旧版本新版本类型影响说明
Next.js / eslint-config-next16.3.016.3.2patchApp Router 生产构建、服务端启动和 E2E 通过。
Vite React 插件6.0.56.1.0minorVitest 的 React 转换链通过类型与测试验证。
Lucide React / shadcn / Sonner1.28.0 / 4.16.1 / 2.0.71.33.0 / 4.19.0 / 2.0.8minor/patchUI、组件和无障碍测试通过。
Day.js / Zustand1.11.21 / 5.0.141.11.23 / 5.0.15patch日期与状态依赖更新,无源码迁移。
Vitest / coverage-v8 / UI4.1.104.1.11patch17 项测试和覆盖率门禁通过。
jest-dom / user-event / React DOM 类型7.0.0 / 14.6.3 / 19.2.47.0.1 / 14.6.6 / 19.2.5patch类型与交互测试工具同步。
Tailwind ESLint 插件4.2.04.4.0minor按新规则改用等价规范 class,lint 零 warning。
commitlint / oxfmt / Sass21.2.x / 0.62.0 / 1.102.021.2.2 / 0.64.0 / 1.103.1minor/patch提交、格式和样式工具更新。

升级内容说明 ​

  • Next.js 16.3.2 的 Node 要求为 >=20.9.0,模板 Node 24.18.0 基线满足要求。
  • ESLint 10 仍未采用:Next 插件链中的 eslint-plugin-react 7.37.5 只声明支持到 ESLint 9。
  • Server Component 继续作为默认边界;浏览器 API 和特权请求的服务端约束未变化。

模板影响 ​

  • Next 生产构建、首屏渲染、登录 hydration 和 404 路由均通过。
  • README 已同步 Next.js 16.3.2 与 oxfmt 0.64.0。

Vue 3 SSR 模板 (vite_vue3_ssr_init) ​

依赖版本变更 ​

依赖或工具旧版本新版本类型影响说明
Nuxt4.5.14.5.2patchNitro 2.13.4、Vite 8.2.2 与 Vue 3.5.41 生产组合通过。
Pinia / @pinia/nuxt3.0.4 / 0.11.34.0.3 / 1.0.2majorpeer 要求完全对齐,生产 SSR、登录 hydration 和 404 E2E 通过。
Vue3.5.403.5.41patch服务端与客户端渲染、类型检查均通过。
TanStack Vue Table9.0.09.1.2minor表格工具类型与组件测试通过。
Lucide Vue / reka-ui / shadcn-vue1.28.0 / 2.10.1 / 2.8.11.33.0 / 2.10.3 / 2.8.2minor/patch现有 UI 组件测试通过。
ESLint / Tailwind 插件10.8.0 / 4.2.010.9.0 / 4.4.0minor按新规则规范 Tailwind class 后 lint 零 warning。
Oxlint / oxfmt / Sass1.77.0 / 0.62.0 / 1.102.01.79.0 / 0.64.0 / 1.103.1minorlint、格式与 Sass 工具链更新。
Vitest / coverage-v8 / UI / vue-tsc4.1.10 / 3.3.94.1.11 / 3.3.11patch13 项测试、覆盖率和类型检查通过。
commitlint / jest-dom / user-event / TS ESLint parser多版本最新兼容版本minor/patch提交与测试工具链通过验证。

升级内容说明 ​

  • @pinia/nuxt 1.0.2 明确要求 Pinia ^4.0.3,因此两者成对升级,不使用混合 major 组合。
  • 上次 4.0.2/1.0.1 组合出现的生产 SSR 500 在当前 4.0.3/1.0.2 组合中未复现;本次以真实 Nuxt build、preview 和 Playwright 路径为采用依据。
  • 本机升级后首次类型检查读取了旧 .nuxt 缓存;运行 nuxt prepare 重新生成类型后通过,干净测试与构建路径也会自动生成当前类型。

模板影响 ​

  • 浏览器行为仍放在 .client 插件、onMounted 或 import.meta.client 保护中,特权代码继续留在 src/server。
  • README 和长期文档已同步 Nuxt、Vue 与 Pinia 当前组合。

文档与锁文件 ​

  • 四套模板的 package.json 与 pnpm-lock.yaml 由 pnpm 增量更新,未删除或整体重建锁文件。
  • 仅实际版本基线变化的 README、AGENTS 和 cwa-docs 长期文档被同步。
  • create-wl-app 发布版本升级到 1.0.9;模板地址与交互流程未修改。

验证结果 ​

模板单测覆盖率 statements组件守卫E2E其他门禁
React SPA15 files / 40 tests79.52%19 components3 passedfrozen install、peers、typecheck、lint、build 通过
Vue 3 SPA14 files / 29 tests79.22%19 components3 passedfrozen install、peers、typecheck、lint、build 通过
React SSR11 files / 17 tests93.97%13 components3 passedfrozen install、peers、typecheck、lint、Next build 通过
Vue 3 SSR8 files / 13 tests93.33%27 components3 passedfrozen install、peers、typecheck、lint、Nuxt build 通过
  • Playwright 最终按端口组串行验证;四套模板均连接各自生产服务并通过。
  • CLI 只读验证:--version、--help、list 均以 0 退出,四个模板标识与仓库映射一致。
  • 文档站 npm run build 通过。

注意事项 ​

  • TypeScript 7.0.2 未采用:typescript-eslint 8.67.0 要求 TypeScript <6.1.0,四模板继续使用 6.0.3。
  • @types/node 26 未采用:模板运行时固定 Node 24.18.0,继续使用 24.13.3。
  • 两套 SPA 的 Vite DevTools 0.6 未采用:Vite 8.2.2 peer 范围仍是 0.4 或 0.5。
  • React SSR 继续使用 ESLint 9.39.5;pnpm 会提示该版本已结束官方支持,但升级到 ESLint 10 会违反 eslint-plugin-react peer 范围。
  • Playwright WebServer 输出 NO_COLOR 被 FORCE_COLOR 覆盖提示;Nuxt 构建输出插件耗时分析,均不阻塞构建或 E2E。

参考依据 ​

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