跳至主要内容

迁移到 14.0.0

此版本包含重大变更。我们知道这些变更可能会造成干扰,但它们是必要的,以便保持我们的依赖项更新,并使 Stylelint 免受安全问题的影响。

用户

有五项变更可能会影响您

  • syntax 选项和语法自动推断已移除
  • Node.js 10 支持已移除
  • 在 13.7.0 中弃用的规则已移除
  • configOverrides 选项已移除
  • function-calc-no-invalid 规则已移除

如果您需要更新您的配置文件,您可能还需要删除您的 .stylelintcache 文件。

syntax 选项和语法自动推断

Stylelint 不再包含以下语法:

  • 解析类似 CSS 的语言,如 SCSS、Sass、Less 和 SugarSS
  • 从 HTML、Markdown 和 CSS-in-JS 对象和模板字面量中提取样式

如果您使用 Stylelint 来 lint 除 CSS 文件以外的任何内容,您将需要安装和配置这些语法。我们建议您扩展一个包含适合您的PostCSS 语法的共享配置。例如,如果您使用 Stylelint 来 lint SCSS,您可以扩展stylelint-config-standard-scss 共享配置

首先,将共享配置作为依赖项安装

npm install --save-dev stylelint-config-standard-scss

然后,更新您的配置对象以使用它

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

此共享配置扩展了 Stylelint,使其与 SCSS 兼容。它为 SCSS 配置了内置规则,并包含postcss-scss 语法stylelint-scss 插件(一组特定于 SCSS 的规则)。

为每种语言提供了其他共享配置

如果您的首选语言或库没有提供共享配置,那么您可以自己安装适当的PostCSS 语法,并使用customSyntax 选项,该选项现在在配置对象中可用。

例如,要 lint SugarSS

首先,将sugarss 语法作为依赖项安装

npm install --save-dev sugarss

然后,更新您的配置对象以使用它

{
"customSyntax": "sugarss",
"rules": {
..
}
}

对于其他语言和嵌入式样式,我们建议使用以下PostCSS 语法

(@stylelint/postcss-css-in-js存在问题。它很可能在将来被弃用,转而使用专注于单个库的更小的语法(参见此问题)。)

如果您 lint 多种样式语言,那么可以使用新的overrides 属性。例如,要 lint CSS 和SugarSS,您可以更新配置对象以包含

{
"extends": ["stylelint-config-standard"],
"overrides": [
{
"files": ["**/*.sss"],
"customSyntax": "sugarss",
"rules": {
"block-closing-brace-empty-line-before": null,
"block-closing-brace-newline-after": null,
"block-closing-brace-newline-before": null,
"block-closing-brace-space-before": null,
"block-opening-brace-newline-after": null,
"block-opening-brace-space-after": null,
"block-opening-brace-space-before": null,
"declaration-block-semicolon-newline-after": null,
"declaration-block-semicolon-space-after": null,
"declaration-block-semicolon-space-before": null,
"declaration-block-trailing-semicolon": null
}
}
]
}

这将扩展官方标准配置,然后使用 overrides 属性设置 customSyntax 属性,并为 SugarSS 文件关闭检查大括号和分号的规则。

然后,您可以使用 Stylelint 来 lint CSS 和 SugarSS 文件

npx stylelint "**/*.{css,sss}"

Node.js 10

对 Node.js 10 的支持已移除。您应该使用以下版本或更高版本的 Node.js

  • 12.20.0
  • 14.13.1
  • 16.0.0

在 13.7.0 中弃用的规则

在 13.7.0 中弃用的规则已移除。您应该参考13.7.0 CHANGELOG 条目中的替代方案列表,并使用它们。

configOverrides 选项

configOverrides 选项已移除。请改用配置对象中的overrides 属性

function-calc-no-invalid 规则

function-calc-no-invalid 已移除。您应该从配置对象中删除它。

插件作者

有三个变更可能会影响您

  • stylelint 中现在使用 PostCSS 版本 8
  • 添加了disableFix 次要选项
  • TypeScript 类型定义已添加到包中

PostCSS 8

解析器的行为在 PostCSS 版本 8 中发生了变化。以下内容现在被解析为 Declaration,而以前被解析为 Rule

foo: {
bar: baz;
}

如果您的插件针对此结构,您需要更新您的逻辑。

尽管 stylelint 中使用 PostCSS 版本 8,但您无法使用新的 Visitor API,因为 Stylelint 插件会被 Stylelint 本身转换为使用 Once。您应该继续使用 walk* API。

disableFix 次要选项

我们之前建议插件作者提供此选项。它现在在 Stylelint 本身中可用,您应该从插件中删除此选项。

内置 TypeScript 定义

stylelint 包现在导出自己的 TypeScript 类型定义。如果您正在使用 @types/stylelint 包,您应该从依赖项中删除它。