Stylelint 验证 SCSS mixin 中的声明

Stylelint validate declarations in SCSS mixin

我有一个 mixin,看起来像这样:

@mixin offset($fraction: 1) {
  @if type-of($fraction) != number or not unitless($fraction) {
    @include error("#{$fraction} is not a unitless number");
  }

  margin-left: percentage($fraction);
}

我也使用此规则设置了 stylelint:

"declaration-empty-line-before": "never"

mixin 和 stylelint 规则都有效。但是,由于 if 语句后的空行,使用此规则会为上述 mixin 抛出错误。我找不到此 stylelint 规则的任何忽略或排除规则,例如 if 语句后除外。这种代码如何在不更改项目中所有声明的规则的情况下进行验证?

尝试反转规则的 objective 即:

  • 来自; 从不 声明前有一个空行,除非声明出现在 at-rule
  • 之后
  • 到; 总是声明前有一个空行,除非声明在另一个声明之后(或者是第一个嵌套声明)。

以下规则配置直接来自stylelint-config-standard,相信能满足您的要求:

{
  "rules": {
    "declaration-empty-line-before": [
      "always",
      {
        "except": [
          "after-declaration",
          "first-nested"
        ],
        "ignore": [
          "after-comment",
          "inside-single-line-block"
        ]
      }
    ]
  }
}

参考:stylelint 文档的 the About rules section