stylelint-config-prettier、stylelint-config-recommended、stylelint-config-sass-guidelines 和 stylelint-config-standard 均为 Stylelint 的共享配置包,用于标准化 CSS/SCSS 代码规范。stylelint-config-recommended 仅包含可捕获错误的规则;stylelint-config-standard 在推荐配置基础上增加了通用代码风格规则;stylelint-config-prettier 用于禁用与 Prettier 格式化冲突的 Stylelint 规则;stylelint-config-sass-guidelines 则专门针对 SCSS/Sass 项目,实施基于 Sass 指南的深度规范。
在现代前端工程中,CSS/SCSS 代码的规范性和一致性至关重要。Stylelint 作为主流的样式检查工具,其配置生态提供了多种预设方案。本文将深入剖析 stylelint-config-prettier、stylelint-config-recommended、stylelint-config-sass-guidelines 和 stylelint-config-standard 四个核心配置包的技术差异、适用场景及组合策略,帮助团队做出精准选型。
stylelint-config-recommended这是 Stylelint 官方提供的最小化错误预防配置。它仅启用那些能明确识别潜在 bug 或浏览器兼容性问题的规则(如无效属性值、未知单位等),完全不涉及代码风格。适合只想避免技术错误、保留最大自由度的团队。
// .stylelintrc.js
module.exports = {
extends: ['stylelint-config-recommended']
};
stylelint-config-standard在 recommended 基础上,增加了一套社区共识的代码风格规则。涵盖缩进、空格、分号、引号等格式规范,目标是提供开箱即用的统一风格。适合希望快速建立基础规范且不愿从零配置的项目。
// .stylelintrc.js
module.exports = {
extends: ['stylelint-config-standard']
};
stylelint-config-prettier专为解决 Prettier 冲突而生。它会禁用所有可能与 Prettier 格式化结果冲突的 Stylelint 规则(主要是格式类规则)。注意:它本身不包含任何规则,必须与其他配置(如 standard)配合使用。
// .stylelintrc.js
module.exports = {
extends: [
'stylelint-config-standard',
'stylelint-config-prettier' // 必须放在最后
]
};
stylelint-config-sass-guidelines针对 SCSS/Sass 项目的深度定制。基于 Sass Guidelines 实践,强化了嵌套深度限制、变量命名、混合宏使用等 Sass 特有规范。适合重度使用 Sass 特性的项目。
// .stylelintrc.js
module.exports = {
extends: ['stylelint-config-sass-guidelines']
};
| 规则类型 | recommended | standard | prettier | sass-guidelines |
|---|---|---|---|---|
| 语法错误检测 | ✅ | ✅ | ❌ (禁用) | ✅ |
| 基础代码风格 | ❌ | ✅ | ❌ (禁用) | ✅ |
| Prettier 冲突规避 | ❌ | ❌ | ✅ | ❌ |
| Sass 特有规范 | ❌ | ❌ | ❌ | ✅ |
| 可直接独立使用 | ✅ | ✅ | ❌ | ✅ |
💡 关键洞察:
prettier是唯一不能独立使用的配置包,它本质是一个“规则禁用器”。
目标:用 Prettier 处理所有格式,Stylelint 只管逻辑错误。
// .stylelintrc.js
module.exports = {
extends: [
'stylelint-config-recommended', // 保留错误检查
'stylelint-config-prettier' // 禁用格式规则
]
};
目标:兼顾 Sass 规范、逻辑错误检查,并让 Prettier 掌控格式。
// .stylelintrc.js
module.exports = {
extends: [
'stylelint-config-sass-guidelines', // 包含 recommended + Sass 规则
'stylelint-config-prettier' // 覆盖格式冲突
]
};
目标:全面接管样式规范,无需外部格式化工具。
// .stylelintrc.js
module.exports = {
extends: ['stylelint-config-sass-guidelines']
// 注意:sass-guidelines 已内置 standard 的大部分规则
};
prettier 位置错误若 stylelint-config-prettier 未放在 extends 数组最后,其禁用规则可能被后续配置覆盖,导致 Prettier 冲突重现。
// ❌ 错误:prettier 被 standard 覆盖
extends: ['stylelint-config-prettier', 'stylelint-config-standard']
// ✅ 正确:prettier 最后生效
extends: ['stylelint-config-standard', 'stylelint-config-prettier']
sass-guidelines 与 standard 冗余stylelint-config-sass-guidelines 内部已继承 stylelint-config-standard,重复引入会导致规则重复加载(虽无功能影响但冗余)。
// ❌ 不必要
extends: [
'stylelint-config-standard',
'stylelint-config-sass-guidelines'
]
// ✅ 简洁
extends: ['stylelint-config-sass-guidelines']
所有配置包都支持通过 rules 字段覆盖或新增规则。例如放宽 sass-guidelines 的嵌套深度限制:
// .stylelintrc.js
module.exports = {
extends: ['stylelint-config-sass-guidelines'],
rules: {
'max-nesting-depth': 4 // 默认是 3
}
};
graph TD
A[是否使用 Prettier?] -->|是| B[是否使用 Sass?]
A -->|否| C[是否需要基础代码风格?]
B -->|是| D[选择 sass-guidelines + prettier]
B -->|否| E[选择 recommended + prettier]
C -->|是| F[选择 standard]
C -->|否| G[选择 recommended]
stylelint-config-recommended:适合极简主义团队或遗留项目渐进式接入,只防错不约束风格。stylelint-config-standard:适合新项目快速建立基础规范,平衡了严格性与通用性。stylelint-config-prettier:必须与其它配置联用,是 Prettier 用户的必备“冲突消除器”。stylelint-config-sass-guidelines:Sass 项目的黄金标准,将语言特性最佳实践固化为规则。最终,没有“最好”的配置,只有“最合适”的组合。理解每个包的设计意图和规则边界,才能构建出既高效又可持续的样式检查体系。
当你只需要 Stylelint 捕获潜在的 CSS 语法错误和浏览器兼容性问题,而不希望强制任何代码风格规范时,应选择此包。适用于追求最小干预或遗留项目渐进式接入的场景。
当项目同时使用 Prettier 进行代码格式化时,必须选择此包以禁用 Stylelint 中与 Prettier 冲突的格式规则。它不能单独使用,需与其他配置(如 standard 或 sass-guidelines)组合,并确保在 extends 数组中置于最后位置。
当项目重度使用 SCSS/Sass 语法(如嵌套、混合宏、变量等)并希望遵循 Sass 社区最佳实践时,应选择此包。它内置了 recommended 和 standard 的核心规则,并额外强化了 Sass 特有规范,适合新建的 Sass 项目。
当你希望快速建立一套完整的 CSS 代码风格规范(包括缩进、空格、分号等),且项目不使用 Prettier 或不需要 Sass 深度规则时,应选择此包。它提供了开箱即用的平衡方案,适合大多数普通 CSS 项目。
The recommended shareable config for Stylelint.
It turns on most of the Stylelint rules that help you avoid errors.
You can use this as a foundation for your own config, but we suggest most people use our standard config instead which extends this config and adds a few more rules to enforce common conventions.
npm install stylelint-config-recommended --save-dev
Set your stylelint config to:
{
"extends": "stylelint-config-recommended"
}
Add a "rules" key to your config, then add your overrides and additions there.
For example, to change the at-rule-no-unknown rule to use its ignoreAtRules option, turn off the block-no-empty rule, and add the unit-allowed-list rule:
{
"extends": "stylelint-config-recommended",
"rules": {
"at-rule-no-unknown": [
true,
{
"ignoreAtRules": ["extends"]
}
],
"block-no-empty": null,
"unit-allowed-list": ["em", "rem", "s"]
}
}