必须将HTML校验设为强制阻断环节,通过htmlhint配置5–8条团队级规则、CI拦截、husky+lint-staged预提交自动修复,并下沉W3C校验能力至编辑器与CI,辅以无术语、带上下文和模板的精准反馈,消除非前端人员修改HTML的技术门槛。
跨专业协作团队(如产品、设计、前端、测试甚至运营人员都可能修改HTML)无法靠个人自觉守住质量底线,必须把校验变成“不修复就卡住”的强制环节。
htmlhint 配置可落地的团队规则集别直接套用默认规则——它会报几百个警告,新人直接放弃。从团队真实痛点出发,只开 5–8 条硬性规则:
"tagname-lowercase": true —— 强制小写,避免 <Div> 和 <div> 混用导致 Git 冲突"attr-no-duplication": true —— 防止 class="a" class="b" 这类低级错误"attr-req-value": ["img", "input"] —— 仅对 img 和 input 强制要求属性值(如 alt、type),不一刀切"head-title-only-in-head": true —— <title> 必须在 <head> 里,否则 SEO 和标签页显示全崩"attr-quote-style": "double" —— 统一用双引号,和 Prettier 格式化对齐,减少无意义 diff规则写进 .htmlhintrc,放在项目根目录,所有成员 clone 即生效。CI 流程中加一行 npx htmlhint src/**/*.html,失败则阻断构建。
靠等 PR 时被发现太晚,问题已合入主干。必须在代码离开本地前拦截:
立即学习“前端免费学习笔记(深入)”;
husky + lint-staged 组合,在 pre-commit 钩子中跑 htmlhint --fix
--fix 能自动补 </div>、转小写、修引号,但不会动语义逻辑——安全可控git add + git commit,修复全程静默完成W3C 官网验证器报告太笼统,且依赖人工上传,无法融入流程。得把它的核心校验能力“下沉”:
parse5 或 jsdom 在 Node 脚本里模拟浏览器解析,捕获 DOMException 错误(如 “Unclosed element”、“Unexpected end tag”)Line 42: <p> inside <p> —— 建议替换为 <div> 或调整嵌套
产品改了 HTML 后收到一条 htmlhint: attr-no-duplication 报错,大概率看不懂。反馈要带上下文:
sed -i '' 's/class="a" class="b"/class="a b"/g' file.html
<img src="x.jpg" alt="此处填写图片说明">,而不是讲“alt 属性是可访问性必需”真正的难点从来不是工具链搭不搭得起来,而是让非前端角色在不理解 DOM 树或 W3C 标准的前提下,也能精准修正问题——校验机制的终点,是消除“需要懂技术才能改 HTML”的门槛。