跳至主要内容

迁移到 15.0.0

此版本包含重大或破坏性更改。

重大更改

两个重大更改可能会影响您

  • 弃用样式规则
  • 添加了 declaration-property-value-no-unknown 规则

弃用样式规则

我们已弃用 76 个强制执行样式约定的规则

  • at-rule-name-case
  • at-rule-name-newline-after
  • at-rule-name-space-after
  • at-rule-semicolon-newline-after
  • at-rule-semicolon-space-before
  • block-closing-brace-empty-line-before
  • block-closing-brace-newline-after
  • block-closing-brace-newline-before
  • block-closing-brace-space-after
  • block-closing-brace-space-before
  • block-opening-brace-newline-after
  • block-opening-brace-newline-before
  • block-opening-brace-space-after
  • block-opening-brace-space-before
  • color-hex-case
  • declaration-bang-space-after
  • declaration-bang-space-before
  • declaration-block-semicolon-newline-after
  • declaration-block-semicolon-newline-before
  • declaration-block-semicolon-space-after
  • declaration-block-semicolon-space-before
  • declaration-block-trailing-semicolon
  • declaration-colon-newline-after
  • declaration-colon-space-after
  • declaration-colon-space-before
  • function-comma-newline-after
  • function-comma-newline-before
  • function-comma-space-after
  • function-comma-space-before
  • function-max-empty-lines
  • function-parentheses-newline-inside
  • function-parentheses-space-inside
  • function-whitespace-after
  • indentation
  • linebreaks
  • max-empty-lines
  • max-line-length
  • media-feature-colon-space-after
  • media-feature-colon-space-before
  • media-feature-name-case
  • media-feature-parentheses-space-inside
  • media-feature-range-operator-space-after
  • media-feature-range-operator-space-before
  • media-query-list-comma-newline-after
  • media-query-list-comma-newline-before
  • media-query-list-comma-space-after
  • media-query-list-comma-space-before
  • no-empty-first-line
  • no-eol-whitespace
  • no-extra-semicolons
  • no-missing-end-of-source-newline
  • number-leading-zero
  • number-no-trailing-zeros
  • property-case
  • selector-attribute-brackets-space-inside
  • selector-attribute-operator-space-after
  • selector-attribute-operator-space-before
  • selector-combinator-space-after
  • selector-combinator-space-before
  • selector-descendant-combinator-no-non-space
  • selector-list-comma-newline-after
  • selector-list-comma-newline-before
  • selector-list-comma-space-after
  • selector-list-comma-space-before
  • selector-max-empty-lines
  • selector-pseudo-class-case
  • selector-pseudo-class-parentheses-space-inside
  • selector-pseudo-element-case
  • string-quotes
  • unicode-bom
  • unit-case
  • value-list-comma-newline-after
  • value-list-comma-newline-before
  • value-list-comma-space-after
  • value-list-comma-space-before
  • value-list-max-empty-lines

当我们创建这些规则时,代码格式化程序(如 Prettier)还不存在。它们现在提供了一种更好的方法来一致地格式化代码,尤其是空格。代码检查器和代码格式化程序是互补工具,可以协同工作以帮助您编写一致且无错误的代码。

通过弃用这些规则,我们可以

  • 专注于编写和维护有助于您 避免错误强制执行(非样式)约定 的规则,这两者都是 Stylelint 独有的
  • 现代化我们的代码库,例如迁移到 ESM,以便我们可以更新我们的依赖项并保持 Stylelint 对您来说是安全的

弃用的规则在本版本中仍然有效(带有弃用警告)。为了准备下一个主要版本(我们将从 Stylelint 中删除这些规则),我们建议

  • 如果您尚未扩展配置对象中的 标准配置
  • 从配置对象中删除弃用的规则

您可以使用以下方法 扩展 标准配置

{
+ "extends": ["stylelint-config-standard"],
"rules": { .. }
}

此外,您可能不再需要扩展 Prettier 的 Stylelint 配置,因为应该没有冲突的规则

{
- "extends": ["stylelint-config-prettier"],
"rules": { .. }
}

我们已从 标准配置 的最新版本中删除了弃用的规则。它仍然通过打开许多 其他强制执行约定的规则 来帮助您编写一致的 CSS,例如大多数 *-notation*-pattern*-quotes 规则。

标准配置 中,我们没有打开许多其他规则,您可以了解有关使用它们将 Stylelint 自定义到您的确切需求的更多信息,请参阅我们的 新指南

或者,您可以继续使用 Stylelint 强制执行样式一致性,方法是使用社区插件 @stylistic/stylelint-plugin,该插件已迁移了弃用的规则。

您可以使用 quietDeprecationWarnings 选项来静默弃用警告。

添加了 declaration-property-value-no-unknown 规则

我们添加了 declaration-property-value-no-unknown 规则。它将标记 CSS 规范中未知的属性-值对,例如

a {
top: red;
}

top 属性接受 <length><percentage>auto 关键字。该规则将标记 red,因为它是一个 <color>

你们中的许多人已经请求了这条规则,我们计划添加更多类似的规则来帮助您 避免 CSS 中的错误

要在配置对象中打开它

{
"extends": ["stylelint-config-standard"],
"rules": {
+ "declaration-property-value-no-unknown": true
..
}
}

该规则使用 CSSTree 及其 语法字典,其中包含 600 多个属性、350 多个类型和 100 多个函数。您可以通过更新 mdn-dataCSSTree 的补丁文件 来帮助识别和填补其字典中的任何空白。

如果您使用 CSS 规范中不存在的值,则可以使用该规则的辅助选项来使该规则更具包容性。您可以

  • 完全忽略属性或值
  • 扩展属性和值的语法

后者确保只允许特定的例外。

如果您当前使用 stylelint-csstree-validator 插件,则可以通过将插件限制为仅检查 at-rule 名称和前缀来继续使用它与新规则一起使用。

{
"rules": {
"csstree/validator": [true, {
+ "ignoreProperties": ["/.+/"]
}]
}
}

破坏性更改

三个破坏性更改也可能会影响您

  • 删除了 processors 配置属性
  • 删除了对 Node.js 12 的支持
  • 更改了 overrides.extends 行为

删除了 processors 配置属性

处理器是我们首次尝试支持 CSS 容器,例如 Markdown、HTML 和 CSS-in-JS。我们后来引入了 自定义语法 来修复处理器的一些缺点,例如与 --fix 选项 的不兼容。

我们还弃用了 postcss-css-in-js 自定义语法。不可能维护一个试图支持每个 CSS-in-JS 库和语法的单片自定义语法,因为它们太多了,而且每个语法都有不同的变化。

您应该从配置对象中删除 processors 属性,并使用特定于库或特定于语法的(例如模板文字)自定义语法 代替。

例如,如果您使用 styled-components

{
- "processors": ["stylelint-processor-styled-components"],
+ "customSyntax": "postcss-styled-syntax",
"rules": { .. }
}

其他自定义语法包括

您将在 很棒的 Stylelint 中找到它们的完整列表。

如果您创建新的自定义语法,请 打开拉取请求 来更新 很棒的 Stylelint,以便其他人可以找到它。例如,Stitchesvanilla-extract 需要语法,它们是基于对象的 CSS-in-JS 库。

删除了对 Node.js 12 的支持

Node.js 12 已达到生命周期结束。我们已删除了对它的支持,以便我们可以更新一些依赖项。您应该使用以下或更高版本的 Node.js

  • 14.13.1
  • 16.0.0
  • 18.0.0

更改了 overrides.extends 行为

为了与 overrides.plugins 保持一致,我们已将 overrides.extends 的行为更改为合并而不是替换。

如果您想保留以前的行为,您应该将您的配置更改为

{
- "extends": ["config-a"],
"overrides": [
{
"files": ["*.module.css"],
"extends": ["config-b"]
},
+ {
+ "files": ["*.css"],
+ "extends": ["config-a"]
+ }
]
}