html-validate是专为HTML设计的校验工具,能捕获语义化、可访问性及W3C合规问题,如p内嵌div、a缺href、img无alt等,需手动配置规则并集成至脚手架CI流程中,确保模板初始即合规。

直接把 HTML 代码质量规则塞进脚手架里,不是加个 eslint-plugin-html 就完事——它默认不校验 <template> 外的静态 HTML,也不管 alt 缺失、lang 漏写、img 嵌套错误这些硬性规范。必须手动接管解析链,否则生成的项目从第一天就“带病出生”。
HTML 规范检查不能只靠 ESLint 默认配置
ESLint 对纯 HTML 文件(如 index.html)默认不启用任何规则,即使装了 eslint-plugin-html,它也只在 .vue 或 .jsx 中的内联模板生效,对独立 index.html 文件完全静默。
- 必须显式配置
overrides,让 ESLint 识别并处理**/index.html等路径 -
processor要设为html/eslint-plugin-html,否则 parser 直接跳过 - 规则如
html-validate/require-lang、html-validate/require-alt需单独安装html-validate并接入,ESLint 原生不支持
用 html-validate 替代或补充 ESLint 的 HTML 校验
html-validate 是专为 HTML 设计的 Linter,能精准捕获语义化、可访问性、W3C 合规类问题,比如 <p> 里嵌 <div>、<a> 缺 href、<img> 无 alt —— 这些 ESLint 插件基本覆盖不到。
- 初始化配置:运行
npx html-validate --init,生成.htmlvalidate.json - 关键规则示例:
"require-alt": "error"、"require-lang": "error"、"no-inline-style": "warn" - 需在脚手架的
package.json中添加"lint:html": "html-validate src/index.html public/*.html" - 注意:它不支持
<template>块,所以 Vue/React 项目仍要靠eslint-plugin-vue或eslint-plugin-react补位
脚手架模板中预埋校验能力,而非仅文档提醒
很多团队把 HTML 规范写进 Wiki,结果新人照着 index.html 模板复制粘贴时,根本不会打开 lint 报告——等 CI 失败才看到一堆 missing lang attribute 错误。
立即学习“前端免费学习笔记(深入)”;
- 脚手架生成的
index.html模板里,必须包含强制字段:lang="zh-CN"、<meta charset="utf-8">、<title>占位符、首屏<img>带alt="" -
preinstall或postinstall钩子里加入html-validate --quiet快速验证模板本身是否合规 - CI 流程中,
lint:html应和lint:js并列执行,失败即阻断,不依赖开发者主动触发
最难的不是写规则,是让规则在项目创建那一刻就生效——模板文件里少一个 lang,后续所有衍生项目都继承这个缺陷;校验命令没绑定到 npm run lint,90% 的人永远不会运行它。脚手架深度定制的终点,是让质量约束变成不可绕过的路径,而不是可选的建议。



















