prettier和stylelint会互相报错是因为二者都控制缩进、引号等格式规则,导致冲突;需禁用stylelint中被prettier覆盖的格式类规则,并正确配置stylelint-config-prettier与stylelint-prettier插件及vs code保存行为。

为什么Prettier和Stylelint会互相报错
因为两者都试图控制同一类格式细节,比如缩进、引号、分号、空行等。Prettier默认强制执行自己的格式规则,而Stylelint如果没做隔离,也会对这些点做校验(例如indentation、string-quotes),结果就是:Prettier改完后触发Stylelint警告,或者Stylelint自动修复又破坏Prettier的格式偏好。
必须关闭Stylelint中所有Prettier已覆盖的规则
Stylelint不能“既检查又格式化”同一类问题——它得退到语义层,只管命名、嵌套、兼容性等Prettier不碰的内容。关键操作是禁用所有格式类规则:
-
indentation→ 交给Prettier的tabWidth和useTabs -
string-quotes→ 由Prettier的singleQuote决定 -
declaration-colon-space-before/declaration-colon-space-after→ Prettier统一处理冒号间距 -
max-empty-lines→ Prettier的printWidth和换行策略已隐含约束
最稳妥的做法是直接使用stylelint-prettier/recommended,它会在extends里自动关掉上述规则,无需手动逐条"off"。
VS Code保存时只让Stylelint修复语义问题,别让它碰格式
很多人开了stylelint.autoFixOnSave却没效果,其实是被Prettier拦截了。VS Code默认走editor.formatOnSave链路,而Prettier插件一旦启用,就会抢先格式化并跳过Stylelint——尤其在处理@layer、:is()或CSS自定义属性时,Prettier可能直接忽略文件,导致Stylelint根本没机会运行。
实操建议:
- 关闭
editor.formatOnSave(全局或工作区) - 只开
stylelint.autoFixOnSave,确保它成为保存时唯一触发的修复器 - 确认安装的是官方
stylelint.vscode-stylelint插件,不是旧版stylelint - 项目根目录加
.editorconfig,内容与Stylelint的indentation、endOfLine保持一致,避免编辑器底层规则干扰
配置文件顺序和依赖版本容易被忽略
stylelint-config-prettier和stylelint-prettier不是一回事:前者是“关规则”,后者是“加插件”。如果只装了stylelint-prettier但没加stylelint-config-prettier,Stylelint仍会报格式错误;反过来,只加stylelint-config-prettier却不装stylelint-prettier插件,prettier/prettier规则就无法启用。
正确组合是:
npm install --save-dev stylelint stylelint-config-standard stylelint-config-prettier stylelint-prettier prettier-
stylelintrc.json中extends顺序必须是:["stylelint-config-standard", "stylelint-config-prettier", "stylelint-prettier/recommended"](注意stylelint-config-prettier要在stylelint-prettier/recommended之前) -
prettier版本建议锁定在3.0+,stylelint用16.0+,低版本对container、@starting-style等新语法支持不全,容易误报
真正难调的不是某一条规则,而是三处配置(Prettier、Stylelint、VS Code)在不同层级上对同一行代码的争夺——谁先写、谁后读、谁有权覆盖,得理清楚链路才能稳住。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











