根本原因是校验链中断:未安装postcss-scss解析器、配置中未在overrides内声明customsyntax: "postcss-scss"、vs code未将文件识别为小写scss;三者缺一即静默失效。

stylelint 无法检测 .scss 文件中的 CSS 错误,根本原因不是插件失效,而是校验链在三个关键环节断开了:**本地没装解析器、配置没对上语法、VS Code 没认出这是 SCSS**。只要缺一个,就全程静默,不报错也不标红。
为什么装了插件却对 .scss 文件完全没反应
VS Code 的 stylelint.vscode-stylelint 插件只是个调度器,它不带解析能力,也不自带规则——真正干活的是你项目里的 stylelint 包和配套解析器。
- 项目根目录没运行
npm install --save-dev stylelint stylelint-scss postcss-scss:缺postcss-scss就无法识别$var、@mixin和嵌套语法,直接报Unknown word或跳过文件 -
.stylelintrc.json(或stylelint.config.js)存在但没写customSyntax: "postcss-scss":这个字段必须放在配置顶层或overrides内部,写在settings.json里无效 - VS Code 右下角语言模式显示的是
SCSS、Sass或Plain Text:必须手动点开,选中全小写的scss—— 大小写敏感,“SCSS” 就等于没配
为什么 .module.scss 这类文件压根不触发检查
stylelint 默认只认标准后缀:.scss、.sass、.css;遇到 .module.scss、.page.scss 等自定义扩展名,连配置文件都不会读,直接跳过。
- 必须在
.stylelintrc.json中用overrides显式声明: -
"files": ["**/*.module.scss"]—— 路径支持 glob,但不能漏掉**/ -
"customSyntax": "postcss-scss"—— 必须写在overrides对象内部,写在顶层会被忽略 - 不能写成
require("postcss-scss")或其他形式,值只能是字符串"postcss-scss"
为什么保存时 auto-fix 只修空格分号,不修属性顺序或嵌套层级
这不是 bug,是 stylelint --fix 的设计限制:它只处理无歧义的格式问题,所有涉及语义判断的规则都 ❌ 不支持自动修复。
- ✅ 可修复项:
color-hex-case、declaration-colon-space-after、string-quotes - ❌ 不可修复项:
order/properties-order、selector-max-compound-selectors、no-duplicate-selectors - 查规则是否支持修复,唯一可靠方式是看官网文档每条规则页右上角的 ✅/❌ 标识
- 别在配置里给不可修复规则加
fix: true—— CLI 和插件都会静默忽略
为什么 Vue / SFC 中的
默认情况下,stylelint 完全不进入单文件组件的 <style></style> 块,哪怕写了 lang="scss"。
- 必须同时满足三件事:
安装stylelint-config-recommended-vue(不是standard-scss)
在stylelint.config.js的extends中引入它.vscode/settings.json中"stylelint.validate"包含"vue"(小写,大小写敏感) - 如果用了
lang="scss",还得确保customSyntax: "postcss-scss"已通过overrides应用到**/*.vue文件 - WebStorm 用户额外注意:右键文件 →
Mark as → StyleSheet这步不能跳,否则直接跳过 linting
stylelint 对路径、大小写、配置位置极其较真,错一个字符,整个校验链就断在起点。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











