npm 包 stylelint-selector-bem-pattern 使用教程

阅读时长 4 分钟读完

在前端开发中,CSS 是不可避免的一部分。尽管 CSS 带来了很多便捷和美观的效果,但是 CSS 中常常出现的选择器的嵌套和滥用,让整个 CSS 文件的维护变得十分困难。这也正是出现了 BEM 命名规范的原因。而在使用 BEM 规范的同时,stylelint-selector-bem-pattern 是一个可以帮助我们检测 BEM 命名规范是否符合我们要求的 npm 包。

stylelint-selector-bem-pattern 是什么?

stylelint-selector-bem-pattern 是一个 stylelint 的插件,在使用 BEM 命名规范的项目中,以一种可扩展的方式编写过滤器(filers),使用正则表达式匹配命名模式。 这样,我们就可以检测 CSS 是否正确使用 BEM 命名规范。

如何使用 stylelint-selector-bem-pattern?

安装

首先,我们需要安装 stylelint-selector-bem-pattern。在命令行中,执行下面的命令:

或者,如果你使用的是 yarn:

配置

接下来,我们需要在 stylelint 的配置文件中添加我们的插件和规则配置。如果你还没有使用 stylelint,你需要 npm installyarn add stylelint 以及配置文件。

stylelint 的配置文件中,添加以下代码:

-- -------------------- ---- -------
-
  ---------- -----------------------------------

  -------- -
    ------------------------------ -
      --------- ------
      ---------------- ------------
      --------------------- -
        ---------- --------------------------------------------------------------
        ----------- ---------------------------------------------------------------------------------------------------------------------------------------
      -
    -
  -
-

在这个配置中,我们添加了一个名为 plugin/selector-bem-pattern 的规则,并使用 preset 属性指定了预设,这里选择了 "bem"。接下来,我们为 componentName 属性设置了一个值,这个值是我们的组件名称。对于 componentSelectors 属性,我们设置了两个可选属性 initialcombined。这是因为 BEM 命名规范有两种写法,"initial" 用于标记第一种写法,"combined" 则用于标记第二种写法。

在上面的配置中,我们使用正则表达式指定了两种写法的匹配规则。

使用

完成了配置之后,我们就可以在我们的代码中使用了。

以下是一个使用了 BEM 规范的 CSS 代码:

-- -------------------- ---- -------
------ -
  ----------------- -----
  ---------- -
    ------ -----
    ----------- -
      ----------------- -----
    -
    --------- -
      -------- ---
      -------- ------
      ------ ------
      ------- ------
    -
  -
-

我们可以看到,在上述代码中,使用了 "initial" 的 BEM 命名法规,即使用了 "__" 和 "--" 来标记子元素和修饰符。

假设我们在这里写了一些不符合 BEM 命名规范的名称,那么 stylelint-selector-bem-pattern 将会自动在控制台输出警告信息。

总结

通过使用 stylelint-selector-bem-pattern,我们可以有效地帮助我们检测 CSS 是否符合 BEM 命名规范。使用正则表达式匹配模式,并且提供了两种类型的解决方案,大大简化了我们的代码检测过程,提高了代码的可读性和可维护性。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66448

纠错
反馈