具有选择器 Bem 模式的无效组件选择器

发布于 2025-01-11 09:20:43 字数 961 浏览 0 评论 0原文

我遇到了 Stylelint 插件 stylelint-selector-bem-pattern 的问题。

我的 Stylelint 规则:

{
  "extends": [
    "stylelint-config-standard-scss"
  ],
  "plugins": [
    "stylelint-selector-bem-pattern"
  ],
  "rules": {
    "selector-class-pattern": null,
    "color-function-notation": "legacy",
    "alpha-value-notation": "number",
    "plugin/selector-bem-pattern": {
      "preset": "bem",
      "componentName": "[A-Z]+",
      "componentSelectors": {
        "initial": "^\\.{componentName}(?:-[a-z]+)?$",
        "combined": "^\\.combined-{componentName}-[a-z]+$"
      }
    }
  }
}

我的 SCSS 组件:

// @define TOTO

.toto_test {
  color: red;
}

.toto__test {
  color: blue;
}

Stylelint 错误:

在此处输入图像描述

I get an issue with the plugin stylelint-selector-bem-pattern of Stylelint.

My Stylelint rules :

{
  "extends": [
    "stylelint-config-standard-scss"
  ],
  "plugins": [
    "stylelint-selector-bem-pattern"
  ],
  "rules": {
    "selector-class-pattern": null,
    "color-function-notation": "legacy",
    "alpha-value-notation": "number",
    "plugin/selector-bem-pattern": {
      "preset": "bem",
      "componentName": "[A-Z]+",
      "componentSelectors": {
        "initial": "^\\.{componentName}(?:-[a-z]+)?
quot;,
        "combined": "^\\.combined-{componentName}-[a-z]+
quot;
      }
    }
  }
}

My SCSS component :

// @define TOTO

.toto_test {
  color: red;
}

.toto__test {
  color: blue;
}

Stylelint errors :

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彼岸花ソ最美的依靠 2025-01-18 09:20:43

您已选择 suit 预设,其 命名约定是:

  • ComponentName
  • ComponentName--modifierName
  • ComponentName-descendentName
  • ComponentName.is-stateOfComponent

如果你希望遵循 SuitCSS 命名约定,您应该编写:

/* @define Button */

.Button-loader {}

或者,您可以使用 < code>preset 选项来指定 bem 命名约定

"plugin/selector-bem-pattern": {
  "preset": "bem"
}

您应该删除 componentNamecomponentSelectors 属性,因为它们会覆盖 “bem” 预设 使用自定义模式。

这将允许:

/* @define button */

.button__loader {}

You have chosen the suit preset, whose naming conventions are:

  • ComponentName
  • ComponentName--modifierName
  • ComponentName-descendentName
  • ComponentName.is-stateOfComponent

If you wish to follow the SuitCSS naming conventions you should write:

/* @define Button */

.Button-loader {}

Alternatively, you can use the preset option to specify the bem naming conventions:

"plugin/selector-bem-pattern": {
  "preset": "bem"
}

You should remove the componentName and componentSelectors properties as they overwrite the "bem" preset with custom patterns.

This will allow:

/* @define button */

.button__loader {}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文