blob: c4e376f489cd3b2301e10b9ca1edce9b3c5cafb9 [file] [log] [blame] [view]
# rule-empty-line-before
Require or disallow an empty line before rules.
```css
a {}
/* ← */
b {} /* ↑ */
/** ↑
* This line */
```
This rule ignores rules that are the very first node in a source.
The `--fix` option on the [command line](../../../docs/user-guide/cli.md#autofixing-errors) can automatically fix all of the problems reported by this rule. We recommend to enable [`indentation`](../indentation/README.md) rule for better autofixing results with this rule.
## Options
`string`: `"always"|"never"|"always-multi-line"|"never-multi-line"`
### `"always"`
There *must always* be an empty line before rules.
The following patterns are considered violations:
```css
a {} b {}
```
```css
a {}
b {}
```
The following patterns are *not* considered violations:
```css
a {}
b {}
```
### `"never"`
There *must never* be an empty line before rules.
The following patterns are considered violations:
```css
a {}
b {}
```
The following patterns are *not* considered violations:
```css
a {} b {}
```
```css
a {}
b {}
```
### `"always-multi-line"`
There *must always* be an empty line before multi-line rules.
The following patterns are considered violations:
```css
a {
color: red;
}
b {
color: blue;
}
```
The following patterns are *not* considered violations:
```css
a {
color: red;
}
b {
color: blue;
}
```
### `"never-multi-line"`
There *must never* be an empty line before multi-line rules.
The following patterns are considered violations:
```css
a {
color: red;
}
b {
color: blue;
}
```
The following patterns are *not* considered violations:
```css
a {
color: red;
}
b {
color: blue;
}
```
## Optional secondary options
### `except: ["after-rule", "after-single-line-comment", "inside-block-and-after-rule", "inside-block", "first-nested"]`
#### `"after-rule"`
Reverse the primary option for rules that follow another rule.
For example, with `"always"`:
The following patterns are considered violations:
```css
a {}
b {}
```
The following patterns are *not* considered violations:
```css
a {}
b {}
```
#### `"after-single-line-comment"`
Reverse the primary option for rules that follow a single-line comment.
For example, with `"always"`:
The following patterns are considered violations:
```css
/* comment */
a {}
```
The following patterns are *not* considered violations:
```css
/* comment */
a {}
```
#### `"inside-block-and-after-rule"`
Reverse the primary option for rules that are inside a block and follow another rule.
For example, with `"always"`:
The following patterns are considered violations:
```css
@media {
a {}
b {}
}
```
The following patterns are *not* considered violations:
```css
@media {
a {}
b {}
}
```
#### `"inside-block"`
Reverse the primary option for rules that are inside a block.
For example, with `"always"`:
The following patterns are considered violations:
```scss
a {
color: red;
b {
color: blue;
}
}
```
The following patterns are *not* considered violations:
```scss
a {
color: red;
b {
color: blue;
}
}
```
#### `"first-nested"`
Reverse the primary option for rules that are nested and the first child of their parent node.
For example, with `"always"`:
The following patterns are considered violations:
```css
@media {
a {}
b {}
}
```
The following patterns are *not* considered violations:
```css
@media {
a {}
b {}
}
```
### `ignore: ["after-comment", "first-nested", "inside-block"]`
#### `"after-comment"`
Ignore rules that follow a comment.
For example, with `"always"`:
The following patterns are *not* considered violations:
```css
/* comment */
a {}
```
#### `"first-nested"`
Ignore rules that are nested and the first child of their parent node.
For example, with `"always"`:
The following patterns are *not* considered violations:
```css
@media {
a {}
b {}
}
```
#### `"inside-block"`
Ignore rules that are inside a block.
For example, with `"always"`:
The following patterns are *not* considered violations:
```css
@media {
a {}
}
```
```css
@media {
a {}
b {}
}
```