padding-line-between-statements
要求或禁止语句之间添加空行
此规则报告的一些问题可以通过--fix
命令行选项自动修复
此规则已在 ESLint v8.53.0 中弃用。请使用相应规则 in @stylistic/eslint-plugin-js
.
此规则要求或禁止在给定的两种语句之间添加空行。适当的空行有助于开发人员理解代码。
例如,以下配置要求在变量声明和return
语句之间添加空行。
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "var", next: "return" }
]*/
function foo() {
var a = 1;
return a;
}
规则详情
如果未提供任何配置,则此规则不会执行任何操作。
配置是一个对象,它具有 3 个属性;blankLine
、prev
和next
。例如,{ blankLine: "always", prev: "var", next: "return" }
表示“在变量声明和return
语句之间需要一个或多个空行”。您可以提供任意数量的配置。如果语句对匹配多个配置,则将使用最后一个匹配的配置。
{
"padding-line-between-statements": [
"error",
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
{ "blankLine": LINEBREAK_TYPE, "prev": STATEMENT_TYPE, "next": STATEMENT_TYPE },
...
]
}
-
LINEBREAK_TYPE
是以下之一。"any"
只是忽略语句对。"never"
禁止空行。"always"
需要一个或多个空行。请注意,它不会将包含注释的行计为空行。
-
STATEMENT_TYPE
是以下之一,或以下的数组。"*"
是通配符。这将匹配任何语句。"block"
是单独的块。"block-like"
是块状语句。这将匹配最后一个标记是块的闭合大括号的语句;例如{ }
、if (a) { }
和while (a) { }
。还匹配立即调用的函数表达式语句。"break"
是break
语句。"case"
是switch
语句中的case
子句。"cjs-export"
是 CommonJS 的export
语句;例如module.exports = 0
、module.exports.foo = 1
和exports.foo = 2
。这是赋值的特殊情况。"cjs-import"
是 CommonJS 的import
语句;例如const foo = require("foo")
。这是变量声明的特殊情况。"class"
是class
声明。"const"
是const
变量声明,包括单行和多行。"continue"
是continue
语句。"debugger"
是debugger
语句。"default"
是switch
语句中的default
子句。"directive"
是指令序言。这将匹配指令;例如"use strict"
。"do"
是do-while
语句。这将匹配所有第一个标记是do
关键字的语句。"empty"
是空语句。"export"
是export
声明。"expression"
是表达式语句。"for"
是for
循环系列。这将匹配所有第一个标记是for
关键字的语句。"function"
是函数声明。"if"
是if
语句。"iife"
是立即调用的函数表达式语句。这将匹配函数表达式的调用,可选地用一元运算符作为前缀。"import"
是import
声明。"let"
是let
变量声明,包括单行和多行。"multiline-block-like"
是块状语句。这与block-like
类型相同,但仅当块是多行时才适用。"multiline-const"
是多行const
变量声明。"multiline-expression"
是表达式语句。这与expression
类型相同,但仅当语句是多行时才适用。"multiline-let"
是多行let
变量声明。"multiline-var"
是多行var
变量声明。"return"
是return
语句。"singleline-const"
是单行const
变量声明。"singleline-let"
是单行let
变量声明。"singleline-var"
是单行var
变量声明。"switch"
是switch
语句。"throw"
是throw
语句。"try"
是try
语句。"var"
是var
变量声明,包括单行和多行。"while"
是while
循环语句。"with"
是with
语句。
示例
此配置将要求在所有return
语句之前添加空行,就像newline-before-return规则一样。
针对[{ blankLine: "always", prev: "*", next: "return" }]
配置的不正确代码示例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "*", next: "return" }
]*/
function foo() {
bar();
}
针对[{ blankLine: "always", prev: "*", next: "return" }]
配置的正确代码示例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "*", next: "return" }
]*/
function foo1() {
bar();
return;
}
function foo2() {
return;
}
此配置将要求在每段变量声明序列之后添加空行,就像newline-after-var规则一样。
针对[{ blankLine: "always", prev: ["const", "let", "var"], next: "*"}, { blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}]
配置的不正确代码示例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["const", "let", "var"], next: "*"},
{ blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}
]*/
function foo1() {
var a = 0;
}
function foo2() {
let a = 0;
}
function foo3() {
const a = 0;
}
class C {
static {
let a = 0;
}
}
针对[{ blankLine: "always", prev: ["const", "let", "var"], next: "*"}, { blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}]
配置的正确代码示例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["const", "let", "var"], next: "*"},
{ blankLine: "any", prev: ["const", "let", "var"], next: ["const", "let", "var"]}
]*/
function foo1() {
var a = 0;
var b = 0;
bar();
}
function foo2() {
let a = 0;
const b = 0;
bar();
}
function foo3() {
const a = 0;
const b = 0;
bar();
}
class C {
static {
let a = 0;
let b = 0;
bar();
}
}
此配置将要求在所有指令序言之后添加空行,就像lines-around-directive规则一样。
针对[{ blankLine: "always", prev: "directive", next: "*" }, { blankLine: "any", prev: "directive", next: "directive" }]
配置的不正确代码示例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "directive", next: "*" },
{ blankLine: "any", prev: "directive", next: "directive" }
]*/
"use strict";
针对[{ blankLine: "always", prev: "directive", next: "*" }, { blankLine: "any", prev: "directive", next: "directive" }]
配置的正确代码示例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: "directive", next: "*" },
{ blankLine: "any", prev: "directive", next: "directive" }
]*/
"use strict";
"use asm";
foo();
此配置将要求在switch
语句中的子句之间添加空行。
针对[{ blankLine: "always", prev: ["case", "default"], next: "*" }]
配置的不正确代码示例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["case", "default"], next: "*" }
]*/
switch (foo) {
case 1:
bar();
break;
}
针对[{ blankLine: "always", prev: ["case", "default"], next: "*" }]
配置的正确代码示例
/*eslint padding-line-between-statements: [
"error",
{ blankLine: "always", prev: ["case", "default"], next: "*" }
]*/
switch (foo) {
case 1:
bar();
break;
case 2:
case 3:
baz();
break;
default:
quux();
}
何时不使用它
如果您不想通知有关换行符的警告,那么禁用此规则是安全的。
兼容性
- JSCS: requirePaddingNewLineAfterVariableDeclaration
- JSCS: requirePaddingNewLinesAfterBlocks
- JSCS: disallowPaddingNewLinesAfterBlocks
- JSCS: requirePaddingNewLinesAfterUseStrict
- JSCS: disallowPaddingNewLinesAfterUseStrict
- JSCS: requirePaddingNewLinesBeforeExport
- JSCS: disallowPaddingNewLinesBeforeExport
- JSCS: requirePaddingNewlinesBeforeKeywords
- JSCS: disallowPaddingNewlinesBeforeKeywords
版本
此规则是在 ESLint v4.0.0-beta.0 中引入的。