迁移到 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-data 或 CSSTree 的补丁文件 来帮助识别和填补其字典中的任何空白。
如果您使用 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,以便其他人可以找到它。例如,Stitches 和 vanilla-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"]
+ }
]
}