stylelint 和 htmlhint 职责分离:前者校验 css 语法与风格,后者检查 html 结构与语义;需通过 postcss-html 解析器支持 html 内联样式,配置 overrides 区分文件类型,并避免规则冲突与修复重叠。

Stylelint 和 HTMLHint 各管一摊,强行混用不等于“联合校验”——它们根本不在同一层面上工作。Stylelint 处理 CSS 语法和风格,HTMLHint 检查 HTML 结构与语义。想让两者协同生效,关键不是堆工具,而是分清职责、隔离配置、避免冲突。
为什么 stylelint "**/*.html" 默认不报错也不检查内联样式?
Stylelint v14+ 默认只解析纯 CSS 文件。遇到 .html,它直接跳过——除非你显式告诉它“这里面有 CSS 块,得拆出来看”。否则 <div style="color: red"> 或 <code><style>body{margin:0}</style> 全部被当作文本忽略。
- 必须安装
postcss-html解析器:运行npm install postcss-html stylelint-config-html --save-dev - 必须在配置中用
overrides单独声明 HTML 文件的处理方式,不能只改全局customSyntax - 若同时处理 Vue 文件,需把
"**/*.vue"加进同一组files,并用stylelint-config-html/vue - 常见错误
Cannot parse selector或Unknown word就是没配对解析器,不是规则写错了
HTMLHint 怎么避免和 Stylelint 在 style 属性上打架?
HTMLHint 的 inline-style-disabled 规则会禁止 style 属性,而 Stylelint 却默认允许甚至校验它。两者目标冲突,不协调就会互相否定。
- 如果项目允许内联样式(比如原型阶段或组件库 demo),就把 HTMLHint 的
inline-style-disabled设为false,别硬关 - 如果团队禁用内联样式,Stylelint 就不该再校验它——删掉
stylelint-config-html中对style属性的检查规则,或用rules覆盖:"declaration-no-important": null这类规则对内联样式无效,反而制造噪音 -
.htmlhintrc里设"attr-value-double-quotes": true,Stylelint 也设"string-quotes": "double",否则引号风格不一致会反复触发修复循环
VS Code 里怎么让两个插件不抢光标焦点、不重复提示?
VS Code 同时启用 Stylelint 和 HTMLHint 插件后,保存一个 HTML 文件,可能弹出两套重叠提示,甚至自动修复相互覆盖。
- 关闭 HTMLHint 的自动修复:在 VS Code 设置里搜
htmlhint.autoFix,设为false;Stylelint 的source.fixAll.stylelint保留开启即可 - 限制 HTMLHint 只检查结构问题,别碰样式:在
.htmlhintrc中禁用所有涉及样式的规则,例如style-disabled、inline-style-disabled、id-class-value(这类属于 CSS 命名范畴,应交由 Stylelint 管) - 用
.stylelintignore排除node_modules/和构建产物目录,但别忽略.html——那是你要校验的目标 - VS Code 的
editor.codeActionsOnSave里不要同时开source.fixAll.htmlhint和source.fixAll.stylelint,后者已足够处理样式部分
真正难的不是装两个工具,而是划清边界:HTMLHint 负责标签是否闭合、属性是否合法、doctype 是否正确;Stylelint 负责 class 名怎么写、CSS 块有没有缩进、<style></style> 里有没有拼错 backgroud-color。一旦边界模糊,比如让 HTMLHint 查 class 值格式、又让 Stylelint 查 style 属性值,问题只会更乱。











