Stylelint报Unknown word或Unexpected token错误是因为默认只解析标准CSS语法,需配置postcss-scss解析器、scss专用规则集、Vue SFC支持及VS Code正确识别SCSS语言模式。

Stylelint报Unknown word或Unexpected token错误
这是最典型的症状:你在 .scss 文件里写 $color: #fff 或 &:hover,保存后立刻看到红色波浪线,提示 Unknown word 或 Unexpected token "$"。根本原因不是 Stylelint 坏了,而是它默认只认标准 CSS 语法——$variable、@mixin、嵌套选择器这些 SCSS 特有结构,在它眼里全是“非法字符”。
必须让 Stylelint 在解析阶段就“切换语言模式”,而不是等编译成 CSS 后再检查(那样就丢失了源码行号和语义)。
- 安装解析器:
npm install --save-dev postcss-scss - 在
stylelint.config.js中声明:customSyntax: "postcss-scss"(注意:这个配置不能写在 VS Code 的settings.json里,只在项目配置中生效) - 删掉
stylelint-config-standard这类纯 CSS 规则集——它会把$当非法属性、把&当非法选择器前缀
SCSS特有规则不生效(如dollar-variable-pattern)
装了 postcss-scss 只解决了“不报错”,但还不能检查 SCSS 风格。比如你想强制变量名以 var_ 开头,或者限制嵌套层级,原生 Stylelint 规则完全无感。
需要引入专为 SCSS 设计的规则插件和预设:
- 安装:
npm install --save-dev stylelint-scss stylelint-config-standard-scss - 配置中改用:
extends: ["stylelint-config-standard-scss"](它已内置禁用冲突规则,并启用scss/*规则) - 启用具体规则,例如:
"scss/dollar-variable-pattern": "^var_"或"scss/selector-nest-limit": 3
Vue SFC里的
即使上面都配对了,.vue 文件中的 块依然静默——因为 Stylelint 默认只扫描独立文件,不主动解析单文件组件内的样式块。
必须显式告诉它“这里面是 SCSS”:
- 安装 Vue 支持插件:
npm install --save-dev stylelint-config-recommended-vue - 在配置中加入:
extends: ["stylelint-config-recommended-vue"] - 确保
stylelint.config.js的overrides区块包含对.vue文件的支持,例如:
overrides: [{
files: ["**/*.vue"],
customSyntax: "postcss-scss",
extends: ["stylelint-config-recommended-vue"]
}]
同时确认 VS Code 设置中 "stylelint.validate" 数组包含 "vue"(大小写敏感,不是 "Vue" 或 "VUE")。
VS Code里没提示,但CLI能跑通
说明本地环境没问题,问题出在 VS Code 的调度链上。它不自带规则引擎,只调用你项目里的 node_modules/.bin/stylelint,所以三个环节缺一不可:
- 项目根目录存在合法的
stylelint.config.js(空文件、名字写成.stylelintrc而非.stylelintrc.json都会导致静默退出) -
package.json中已安装stylelint(只装 VS Code 插件stylelint.vscode-stylelint不够) -
"stylelint.enable": true必须在工作区或用户设置中显式开启(默认是false)
还有一个隐蔽坑:VS Code 右下角语言模式必须显示为 SCSS(小写),不是 Sass 或 Plain Text——否则插件根本不会触发校验。
配置真正生效的关键,从来不是堆插件,而是让 customSyntax、extends、overrides 和编辑器识别这四者咬合到位。少一个,就退回“不认识 SCSS”的原始状态。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











