stylelint-config-recommended、stylelint-config-standard、stylelint-config-idiomatic-order 和 stylelint-config-sass-guidelines 都是 stylelint 的共享配置包,旨在帮助团队统一 CSS 代码风格并捕获潜在错误。recommended 专注于开启避免错误的规则,standard 在此基础上增加了常见的风格规范,idiomatic-order 专门控制属性书写顺序,而 sass-guidelines 则针对 Sass 预处理器提供了特定规则。这些配置包可以单独使用,也可以组合使用,以适应不同项目的需求。
在大型前端项目中,保持 CSS 代码的一致性至关重要。stylelint 提供了多种共享配置包,但它们的定位和适用场景各不相同。stylelint-config-standard、stylelint-config-recommended、stylelint-config-idiomatic-order 和 stylelint-config-sass-guidelines 分别解决了不同层面的问题。让我们深入对比它们的核心差异。
stylelint-config-recommended 专注于“ correctness ”(正确性)。
// .stylelintrc.json
{
"extends": ["stylelint-config-recommended"]
}
stylelint-config-standard 专注于“ consistency ”(一致性)。
recommended 的所有规则。// .stylelintrc.json
{
"extends": ["stylelint-config-standard"]
}
stylelint-config-idiomatic-order 专注于“ order ”(顺序)。
stylelint-order 插件。// .stylelintrc.json
{
"extends": ["stylelint-config-idiomatic-order"]
}
stylelint-config-sass-guidelines 专注于“ preprocessor ”(预处理器)。
stylelint-scss 插件。// .stylelintrc.json
{
"extends": ["stylelint-config-sass-guidelines"]
}
配置包是否需要额外安装插件是使用成本的关键因素。
stylelint-config-recommended 不需要额外插件。
npm install --save-dev stylelint-config-recommended
stylelint-config-standard 不需要额外插件。
npm install --save-dev stylelint-config-standard
stylelint-config-idiomatic-order 必须安装 stylelint-order。
npm install --save-dev stylelint-config-idiomatic-order stylelint-order
stylelint-config-sass-guidelines 必须安装 stylelint-scss。
npm install --save-dev stylelint-config-sass-guidelines stylelint-scss
规则的数量和严格程度直接影响开发体验和代码质量。
stylelint-config-recommended 规则最少。
// 示例:允许任意颜色格式
"color-no-invalid-hex": true
stylelint-config-standard 规则适中。
// 示例:强制使用十六进制颜色
"color-hex-case": "lower"
stylelint-config-idiomatic-order 规则特定。
// 示例:强制 position 属性在前
"order/properties-order": ["position", "top", "right"]
stylelint-config-sass-guidelines 规则特定。
// 示例:限制嵌套深度为 3
"max-nesting-depth": 3
这些配置包设计为可组合使用,以满足复杂需求。
方案 A:标准 CSS 项目
standard。{
"extends": ["stylelint-config-standard"]
}
方案 B:标准 CSS + 属性排序
standard 和 idiomatic-order。{
"extends": [
"stylelint-config-standard",
"stylelint-config-idiomatic-order"
]
}
方案 C:Sass 项目
standard 和 sass-guidelines。{
"extends": [
"stylelint-config-standard",
"stylelint-config-sass-guidelines"
],
"plugins": ["stylelint-scss"]
}
方案 D:最小化错误检查
recommended。{
"extends": ["stylelint-config-recommended"]
}
| 特性 | recommended | standard | idiomatic-order | sass-guidelines |
|---|---|---|---|---|
| 核心目标 | 避免错误 | 统一风格 | 属性排序 | Sass 规范 |
| 包含关系 | 基础集 | 包含 recommended | 独立插件规则 | 独立插件规则 |
| 额外依赖 | 无 | 无 | stylelint-order | stylelint-scss |
| 适用语言 | CSS | CSS | CSS | SCSS/Sass |
| 维护状态 | 活跃 | 活跃 | 较低 | 活跃 |
stylelint-config-standard 是大多数项目的最佳起点 🚀。
stylelint-config-recommended 适合高度定制化的团队 🛠️。
stylelint-config-sass-guidelines 仅限 Sass 项目 🎨。
stylelint-scss 使用。stylelint-config-idiomatic-order 按需选用 📋。
核心原则:不要过度配置。从 standard 开始,如果有特殊需求(如 Sass 或属性排序),再叠加相应的配置包。保持配置简单 — 这样更容易维护,也能减少开发阻力。
选择 stylelint-config-recommended 如果你只需要捕获明显的语法错误和潜在问题,而不想强制特定的代码风格。它是其他配置的基础,适合希望自定义风格规则或与其他配置组合使用的场景,提供最安全的底线保障。
选择 stylelint-config-standard 如果你需要一个开箱即用的完整 CSS 规范,既包含错误检查也包含风格约束。它是目前最流行的选择,适合大多数标准 CSS 项目,内部已包含 recommended 配置,无需重复安装。
选择 stylelint-config-sass-guidelines 如果你的项目主要使用 Sass 或 SCSS 预处理器,并且希望遵循 Hugo Giraudel 提出的 Sass 编码指南。它包含嵌套深度、选择器格式等特定规则,必须配合 stylelint-scss 插件使用。
选择 stylelint-config-idiomatic-order 如果你的团队非常看重 CSS 属性的书写顺序,希望遵循 Idiomatic CSS 原则。它适合对代码排序有严格要求的项目,但需注意它依赖 stylelint-order 插件,且更新频率相对较低,适合稳定型项目。
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"]
}
}