Sublime Text中Stylelint不报错的根本原因是校验链路断裂:未安装本地stylelint、缺配置文件、.scss未绑定SCSS语法类型;需按顺序安装项目依赖、SublimeLinter框架及contrib插件,并手动设置语法类型与正确配置。

Sublime Text 要让 Stylelint 真正跑起来检查 CSS/SCSS,SublimeLinter-contrib-stylelint 只是其中一环,单独装它几乎没用——链路断在 Node、项目依赖、语法识别、配置文件任意一环,都会导致“保存没反应”“状态栏不显示”“右下角一直是 Plain Text”。
为什么装了插件却完全不报错
这不是插件失效,而是校验流程卡在前置环节:
-
SublimeLinter-contrib-stylelint本身不带stylelint命令,它只负责调用;如果终端里运行stylelint --version报command not found,插件必然静默失败 - Sublime 默认把
.scss当作Plain Text,不会触发任何 linter —— 必须手动点右下角语言名 → 选SCSS(不是 Sass、PostCSS 或 CSS) - 插件默认优先找项目根目录下的
node_modules/.bin/stylelint,而非全局安装的;没装本地stylelint,它就直接跳过 - 缺少
stylelint.config.js或.stylelintrc.js,哪怕命令能跑,也会因无规则退出,不报错也不提示
必须按顺序装这三样东西
顺序错了,90% 的问题都出在这儿:
- 先在项目根目录运行:
npm install --save-dev stylelint stylelint-scss stylelint-config-sass-guidelines(别只装全局版) - 再通过 Package Control 安装:
SublimeLinter(框架)→SublimeLinter-contrib-stylelint(执行器) - 最后确认 Sublime 右下角语言已设为
SCSS或CSS,且文件路径在项目文件夹内(否则找不到node_modules)
配置文件里 max-nesting-depth 不生效怎么办
这条规则对 SCSS 嵌套默认无效,不是规则写错了,是没告诉 Stylelint “这是 SCSS”:
- 必须在
stylelint.config.js中显式声明:customSyntax: "postcss-scss" - 必须启用插件:
plugins: ["stylelint-scss"] -
"max-nesting-depth": 3才会真正计算&__header、@mixin、@if这类结构的嵌套层级 - 只装
stylelint-config-sass-guidelines不够,它不自动引入stylelint-scss插件
executable 路径和 fix-on-save 怎么配
插件设置里这两项最容易填错:
-
"executable": ["./node_modules/.bin/stylelint"]是推荐写法(相对路径,适配项目级安装);填绝对路径容易跨机器失效 -
"args": ["--fix-on-save"]必须加在SublimeLinter.sublime-settings的styleslint配置块里,不是全局 args - 如果用了 nvm 或 fnm 管理 Node 版本,
executable可能得指向具体 shims,比如:["/Users/xxx/.nvm/versions/node/v20.15.0/bin/stylelint"] -
--fix-on-save仅在 Stylelint 14+ 支持,旧版本会直接忽略该参数,也不报错
最常被跳过的动作:确认 .scss 文件右下角显示的是 SCSS,不是 Plain Text;以及项目根目录是否存在 stylelint.config.js。这两步没做,后面所有配置都是空中楼阁。


















