stylelint-config-recommended、stylelint-config-sass-guidelines 和 stylelint-config-standard 都是 Stylelint 的预设配置包,用于定义 CSS/SCSS 代码的检查规则。stylelint-config-recommended 仅包含能捕获明显错误的最小规则集;stylelint-config-standard 在推荐配置基础上增加了社区通用的代码风格规范;stylelint-config-sass-guidelines 则专门针对 SCSS 项目,强制实施 Sass Guidelines 中的最佳实践,包括嵌套深度、变量命名等 SCSS 特有约束。
stylelint-config-recommended、stylelint-config-sass-guidelines 与 stylelint-config-standard在现代前端工程中,CSS/SCSS 代码的规范性和一致性对团队协作和长期维护至关重要。Stylelint 是业界主流的样式代码检查工具,而配置包则决定了具体启用哪些规则。本文将深入对比三个常用配置包:stylelint-config-recommended、stylelint-config-sass-guidelines 和 stylelint-config-standard,帮助你在项目选型时做出精准决策。
stylelint-config-recommended这是 Stylelint 官方提供的最小可行配置,仅包含那些能明确识别出错误(如无效属性值、未知单位)的规则。它不涉及代码风格或格式偏好,目标是捕获真正会破坏渲染或导致运行时问题的 CSS 错误。
// .stylelintrc.json 使用 stylelint-config-recommended
{
"extends": ["stylelint-config-recommended"]
}
该配置适用于希望从零开始自定义规则集的团队,或只想避免语法错误而不强制统一风格的场景。
stylelint-config-standard由 Stylelint 核心团队维护,建立在 stylelint-config-recommended 之上,额外添加了大量关于代码风格、命名约定和结构组织的规则。它代表了社区广泛接受的最佳实践,例如要求使用双引号、禁止空行结尾、强制声明块排序等。
// .stylelintrc.json 使用 stylelint-config-standard
{
"extends": ["stylelint-config-standard"]
}
注意:此配置默认针对通用 CSS,但通过可选插件支持 SCSS、Less 等预处理器。
stylelint-config-sass-guidelines这是一个专注于 SCSS 项目的配置包,基于 Hugo Giraudel 提出的 Sass Guidelines 实践。它不仅包含语法正确性检查,还强制执行 SCSS 特有的结构规范,如嵌套深度限制、变量命名约定($kebab-case)、混合宏使用方式等。
// .stylelintrc.json 使用 stylelint-config-sass-guidelines
{
"extends": ["stylelint-config-sass-guidelines"]
}
该配置假定项目使用 SCSS,并内置了对 SCSS 语法的支持(依赖 postcss-scss 解析器)。
所有三个配置都会报错,因为它们都继承了 stylelint-config-recommended 的核心错误检测能力。
/* invalid.css */
color: reddd; /* 拼写错误 */
display: flexbox; /* 无效值 */
stylelint-config-recommended: 报错 ✅stylelint-config-standard: 报错 ✅stylelint-config-sass-guidelines: 报错 ✅/* quotes.scss */
.selector {
content: 'hello';
}
stylelint-config-recommended: 不检查 ❌stylelint-config-standard: 要求双引号,报错 ✅
Expected double quotes (string-quotes)
stylelint-config-sass-guidelines: 要求单引号(遵循 Sass Guidelines),报错 ✅
Expected single quotes (string-quotes)
/* deep-nesting.scss */
.container {
.sidebar {
.menu {
.item {
color: blue;
}
}
}
}
stylelint-config-recommended: 不检查嵌套深度 ❌stylelint-config-standard: 默认不限制嵌套深度(除非显式配置)❌stylelint-config-sass-guidelines: 默认最大嵌套深度为 3 层,此处 4 层会报错 ✅
Expected nesting depth to be no more than 3 (max-nesting-depth)
/* var-name.scss */
$MyVariable: #fff;
stylelint-config-recommended: 不检查变量名 ❌stylelint-config-standard: 对普通 CSS 变量有规则,但对 SCSS $ 变量无特殊处理 ❌stylelint-config-sass-guidelines: 要求 SCSS 变量使用 kebab-case,此处 PascalCase 会报错 ✅
Expected $my-variable instead of $MyVariable (scss/dollar-variable-pattern)
stylelint-config-recommended 和 stylelint-config-standard 默认使用标准 CSS 解析器。若用于 SCSS 项目,需额外安装并配置 postcss-scss:
{
"extends": ["stylelint-config-standard"],
"customSyntax": "postcss-scss"
}
stylelint-config-sass-guidelines 内部已预设 customSyntax: "postcss-scss",开箱即用支持 SCSS。
所有配置均可通过 .stylelintrc.json 中的 rules 字段覆盖默认行为:
{
"extends": ["stylelint-config-sass-guidelines"],
"rules": {
"max-nesting-depth": 4 // 放宽嵌套限制
}
}
但需注意:stylelint-config-sass-guidelines 包含一些 SCSS 专属规则(如 scss/dollar-variable-pattern),这些规则在非 SCSS 项目中会失效或报错。
经核查官方 npm 页面及 GitHub 仓库:
stylelint-config-recommended:由 Stylelint 官方维护,持续更新,适用于所有 Stylelint 项目的基础层。stylelint-config-standard:由 Stylelint 核心团队维护,活跃更新,是通用 CSS/SCSS 项目的推荐起点。stylelint-config-sass-guidelines:截至 2024 年仍在维护,但更新频率较低。其规则集紧密绑定 Sass Guidelines 文档,适合严格遵循该规范的团队。⚠️ 重要提示:
stylelint-config-sass-guidelines仅适用于 SCSS 项目。若用于纯 CSS 项目,会因解析器不匹配或规则不适用导致意外行为。
| 项目类型 | 推荐配置 | 理由 |
|---|---|---|
| 纯 CSS 项目 | stylelint-config-standard | 提供完整的 CSS 风格规范,无需处理预处理器特有规则 |
| SCSS 项目,追求通用最佳实践 | stylelint-config-standard + postcss-scss | 灵活且社区支持广泛,可按需调整规则 |
| SCSS 项目,严格遵循 Sass Guidelines | stylelint-config-sass-guidelines | 开箱即用实现指南中的所有约束,减少配置成本 |
| 需要完全自定义规则集 | stylelint-config-recommended | 仅保留必要错误检查,其余规则自由定义 |
stylelint-config-sass-guidelines 能快速落地一致的代码风格。stylelint-config-standard 是更通用的选择,配合解析器配置即可覆盖多语言场景。stylelint-config-recommended 开始逐步添加规则是最可控的方式。最终,没有“最好”的配置,只有“最合适”当前团队和项目上下文的配置。建议在项目初期通过试用不同配置,结合 CI/CD 中的反馈,找到最高效的规范组合。
选择 stylelint-config-recommended 如果你只需要捕获 CSS 中的语法错误和无效值,而不希望强制任何代码风格规则。它适合作为自定义配置的基础,或用于对格式规范要求极低的遗留项目。
选择 stylelint-config-sass-guidelines 如果你的项目使用 SCSS 且团队希望严格遵循 Sass Guidelines 的规范,例如限制嵌套深度、强制变量使用 kebab-case 命名等。该配置专为 SCSS 设计,开箱即用,但不适用于纯 CSS 项目。
选择 stylelint-config-standard 如果你需要一套全面且被广泛接受的 CSS 代码规范,涵盖引号风格、声明排序、空行处理等。它适用于大多数现代 CSS 或 SCSS 项目,只需配合解析器即可支持预处理器,平衡了规范性与灵活性。
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"]
}
}