Skip to content
2026-10-19QUALITY约 4 分钟阅读

FASTER FEEDBACK LOOP

Next.js 模板的 lint 基线迁移到仍受维护的 ESLint 10,同时保留既有 React、Hooks、无障碍、import 与 Tailwind 检查。

  • ESLint
  • ESLint 10
  • Next.js
  • React SSR
  • peer dependencies
  • pnpm

2026-10-19 ​

更新概览 ​

  • React SSR 模板:ESLint 9.39.5 → 10.13.0,采用现有 eslint-config-next@16.4.0 的官方兼容处理。
  • 为三个精确插件版本补充 ESLint peer 范围,严格冻结安装及 pnpm peers check --json 通过。
  • React SPA、Vue 3 SPA、Vue 3 SSR 与 Spring Boot:本次无依赖变化。
  • React SSR 验证:类型检查、无缓存 lint、29 个单元与组件测试、覆盖率、13 个组件测试守卫、生产构建及 4 个 E2E 用例全部通过。

React SSR 模板 (vite_react_ssr_init) ​

依赖版本变更 ​

依赖旧版本新版本类型影响说明
eslint^9.39.5^10.13.0major迁移到官方仍维护的 ESLint 10 主线,更新核心解析、作用域与缓存依赖

唯一发生版本变化的直接依赖为 ESLint。Next.js、eslint-config-next、React、TypeScript、Tailwind 插件、Node 与 pnpm 基线均保持原值。

兼容处理 ​

Next.js 官方说明明确指出,eslint-config-next@16.4.0 起支持 ESLint 10。现有配置包含旧 React/import 规则上下文 API 以及 Babel scope manager 的兼容处理,因此保留官方 core-web-vitals、TypeScript 配置和 Tailwind 规则。

以下插件的上游 peer 声明仍未包含 ESLint 10:

插件当前版本项目级修正
eslint-plugin-react7.37.5在原 ESLint peer 范围后补充 ^10.13.0
eslint-plugin-import2.32.0同上
eslint-plugin-jsx-a11y6.10.2同上

使用 pnpm 官方支持的 peer overrides,在 pnpm-workspace.yaml 中按“精确插件版本 > eslint”限定修正范围,并将配置记录进锁文件。保留严格 peer 检查及既有供应链策略。

除了对现有源码运行 lint,还用三组故意违规的内存样例检查规则行为:react/jsx-key、import/no-anonymous-default-export、jsx-a11y/alt-text 均正确检出对应问题,且未出现插件加载或运行错误。

模板影响 ​

不涉及业务源码、路由或会话行为变更。Server Component 默认、"use client" 边界与 src/server 特权请求约定保持原样,沿用现有质量阈值与官方规则集。

React SPA 模板 (vite_react_init) ​

本次无依赖变化。 已使用 ESLint 10,本次不调整该模板。

Vue 3 SPA 模板 (vite_vue3_init) ​

本次无依赖变化。 继续使用 Oxlint 与 oxfmt。

Vue 3 SSR 模板 (vite_vue3_ssr_init) ​

本次无依赖变化。 已使用 ESLint 10,本次不调整该模板。

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

本次无依赖变化。 不涉及后端构建、镜像或部署。

文档与锁文件 ​

  • React SSR 的 package.json、pnpm-workspace.yaml 与 pnpm-lock.yaml 同步更新。锁文件仅变更 ESLint 及其依赖链和相应 peer 解析结果,未删除或重建锁文件。
  • React SSR 的 README 与 AGENTS.md 同步 ESLint 10.13.0 基线,并说明版本受限的 peer 修正需要随插件升级复核。
  • 更新本文及 core/ReactSSR模板.md 的工具链说明,同时将该页滞后的 Next.js 基线说明对齐模板现有的 16.4.0。
  • cwa-stack 五个独立模板映射与四个全栈预设核对正常,--version、--help、list 正常;无需修改生成器或发布 CLI。

验证结果 ​

检查结果
pnpm install --frozen-lockfile --strict-peer-dependencies通过,供应链策略校验通过
pnpm peers check --json通过,无 bad、missing 或 conflicts
pnpm typecheck通过
pnpm exec eslint . --no-cache --max-warnings 0通过,无错误或警告
React/import/无障碍规则违规样例3/3 正确检出,未发生插件运行错误
pnpm test13 个测试文件、29 个测试通过
pnpm test:coverage29 个测试通过;语句 89.43%、分支 77.58%、函数 91.66%、行 90.08%,满足原阈值
pnpm test:component-coverage13 个组件通过
修改文件的 oxfmt 检查package.json、pnpm-workspace.yaml、README.md、AGENTS.md 全部通过
CI=1 pnpm test:e2e包含生产构建与新启动的 SSR 预览服务,4/4 通过
cwa-docs npm run build通过,升级日志正常收录
cwa-docs npm run check:seo通过,65 页、65 sitemap、54 RSS、64 llms 条目

E2E 覆盖匿名访问重定向、登录、文档页面渲染和 404 页面。其余未变更模板本次未重复运行质量门禁。

注意事项 ​

  • 三个插件的上游 peer 声明尚未更新,本次是依赖 Next.js 官方兼容处理并经项目验证的本地元数据修正,不代表插件已原生声明支持 ESLint 10。插件版本变化时需复核;上游明确支持后移除对应 override。
  • ESLint 9 已结束官方维护,支持状态见 ESLint 版本支持说明。
  • 现有 SSR 预览命令在 output: standalone 配置下仍有 Next.js 启动方式提示,本次生产构建和 E2E 均成功,该提示未阻塞模板验证。
  • VitePress 仍有部分产物分块超过 500 kB 的提示;文档构建与 SEO 验收成功,本次不调整分块告警阈值。

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