迁移到 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 的规则)。
为每种语言提供了其他共享配置
- stylelint-config-recommended-vue ... Vue 的共享配置。
- stylelint-config-html ... 启用对 HTML、XML、Vue、Svelte 和 PHP 解析的共享配置。
如果您的首选语言或库没有提供共享配置,那么您可以自己安装适当的PostCSS 语法,并使用customSyntax
选项,该选项现在在配置对象中可用。
例如,要 lint SugarSS。
首先,将sugarss 语法作为依赖项安装
npm install --save-dev sugarss
然后,更新您的配置对象以使用它
{
"customSyntax": "sugarss",
"rules": {
..
}
}
对于其他语言和嵌入式样式,我们建议使用以下PostCSS 语法
- Less 语言 (
.less
) 使用 postcss-less - Sass 语言 (
.sass
) 使用 postcss-sass - CSS-in-JS 嵌入 (
.js
、.jsx
、.ts
等) 使用 @stylelint/postcss-css-in-js - HTML、XML 和类似 HTML 的嵌入 (
.html
、.xml
、.svelte
、.vue
等) 使用 postcss-html - Markdown 嵌入 (
.md
、.markdown
等) 使用 postcss-markdown
(@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
包,您应该从依赖项中删除它。