直接回答:性价比排序下的门禁清单:类型检查(tsc --noEmit,成本最低拦截最多)、Lint(ESLint + Stylelint,配 --max-warnings 0 防渐进腐化)、单元测试(Vitest 跑受影响模块)、构建产物检查(能否构建、bundle 体积预算)、E2E 冒烟(Playwright 跑核心链路几条用例)。原则是门禁必须在分钟级完成——超过十分钟的 CI 会被开发者绕过,失去意义。

展开解析:分层设计:pre-commit 只放秒级检查(lint-staged 对改动文件跑 eslint --fix 与 prettier);MR 流水线跑完整类型检查、全量单测、构建与体积对比(把产物大小与主分支 diff 评论到 MR 上,超预算标红);合并后主干跑全量 E2E 与跨浏览器矩阵(慢,放主干而非阻塞 MR)。E2E 的取舍要务实:全量回归 E2E 维护成本极高(选择器脆、环境飘),只保留“登录、核心下单/发帖链路”级别的十来条高价值用例,失败必须当日修复或删除,不许挂着红。体积门禁用 bundlesize/size-limit 类工具定硬预算(首屏 JS 如 200KB gzip),超限要 owner 审批。还有一个隐形门禁:依赖变更审查(lockfile diff 大、新增依赖要人工确认,供应链安全)。所有门禁都要给“紧急跳过”通道(审批留痕),否则遇到线上救火时团队会学会关掉整个 CI。

追问方向:如何让 E2E 用例不脆弱?体积预算超了的整改路径是什么?

(约 480 字)