HTML代码质量规则库需落地执行:用html-validate替代htmllint,集成pre-commit和VS Code插件,精选必开/慎开/关闭规则,配文档链接与一键修复脚本,CI报错带行号和具体建议。

团队 HTML 代码质量规则库不是配个 ESLint 插件就完事——它得能落地、能检查、能被开发者接受,否则就是摆设。
怎么让 HTML 检查真正跑起来(而不是只在 CI 里报错)
多数团队卡在第一步:本地开发时没人主动运行检查。关键不是“能不能查”,而是“会不会自动查”。
- 用
html-validate而不是htmllint:前者支持现代 HTML5 语义、可扩展规则、输出格式兼容 VS Code 和 CI,后者已多年未维护,遇到aria-*或data-*属性常误报 - 把检查集成进
pre-commit:用husky+lint-staged,只检查暂存区的.html文件,避免全量扫描拖慢提交 - VS Code 必须配
html-validate插件,并设置"html-validate.enable": true,否则编辑器里不标红,开发者根本看不到问题
哪些规则必须开,哪些建议关掉
规则太多等于没规则。从团队真实 HTML 使用场景出发,优先锁定高频出错、影响可访问性或渲染一致性的项。
- 必开:
"element-permitted-content"(防止<div> 写进 <code><p></p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/xiazai/skill5806" title="html-deploy"><img src="https://img.php.cn/upload/skill/000/000/081/179066538882434.jpg" alt="html-deploy" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a href="/xiazai/skill5806" title="html-deploy">html-deploy</a> <p>使用 htmlcode.fun 将 HTML 内容或文件部署到网页,适用于用户要求“部署到网页”“托管此 HTML”“生成此前端...的实时链接”等场景。</p> </div> <a href="/xiazai/skill5806" title="html-deploy" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>)、"no-duplicate-attributes"、"require-valid-alt-text"(含空 alt 的显式声明) - 慎开:
"no-unknown-elements"——如果用了 Web Components 或自定义标签,这条会误伤;改用"no-unknown-elements": ["error", {"ignore": ["my-button", "app-header"]}] - 建议关:
"require-lang-attribute"——除非全站强制多语言,否则单页加lang="zh-CN"成本高、收益低;可用 CI 阶段单独扫描首页校验 - 每条规则配
docsUrl:比如"require-valid-alt-text"对应链接指向内部 Wiki,说明“什么算有效 alt”、“图标按钮怎么处理”、“装饰图怎么写空 alt”,别只甩 W3C 链接 - 提供一键修复脚本:对
"no-trailing-whitespace"、"no-multiple-empty-lines"这类纯格式规则,用html-validate --fix并封装成 npm script,开发者执行npm run fix:html就能批量修 - CI 报错信息要带行号+规则 ID+建议写法:例如
src/login.html:42:17: require-valid-alt-text: img missing alt, use alt="" or alt="登录按钮",不写“请修正语义错误”这种废话
如何让团队愿意改、改得快
规则库推不动,往往不是技术问题,是反馈太滞后、修复太麻烦。
立即学习“前端免费学习笔记(深入)”;
最难的部分不是写配置,是让每个 PR 都带 HTML 检查结果、让每个新成员第一次提交就被友好提示——这需要把规则嵌进工作流毛细血管里,而不是贴在 Wiki 第一页等着人点开看。


















