key-spacing
强制在对象文字属性的键和值之间保持一致的间距
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复。
此规则在 ESLint v8.53.0 中已弃用。请使用 相应的规则 在 @stylistic/eslint-plugin-js
中。
此规则强制在对象文字属性中的冒号周围使用空格。它可以单独验证每个属性,或者可以确保对象文字中相邻属性的水平对齐。
规则详细信息
此规则强制在对象文字属性的键和值之间保持一致的间距。在长行的情况下,可以在允许使用空格的地方添加新行。
选项
此规则具有一个对象选项
"beforeColon": false (默认) | true
false
: 禁止在对象文字中的键和冒号之间使用空格。true
: 要求在对象文字中的键和冒号之间至少使用一个空格。
"afterColon": true (默认) | false
true
: 要求在对象文字中的冒号和值之间至少使用一个空格。false
: 禁止在对象文字中的冒号和值之间使用空格。
"mode": "strict" (默认) | "minimum"
"strict"
: 强制在对象文字中的冒号前后恰好使用一个空格。"minimum"
: 强制在对象文字中的冒号前后使用一个或多个空格。
"align": "value" | "colon"
"value"
: 强制在对象文字中对齐值。"colon"
强制在对象文字中对齐冒号和值。
"align"
使用一个对象值允许在对齐对象文字中的值时进行细粒度间距。"singleLine"
指定单行对象文字的间距样式。"multiLine"
指定多行对象文字的间距样式。
请注意,您只能使用顶层选项或分组选项 (singleLine
和 multiLine
),但不能同时使用两者。
beforeColon
使用默认 { "beforeColon": false }
选项时,此规则不正确代码的示例
/*eslint key-spacing: ["error", { "beforeColon": false }]*/
var obj = { "foo": 42 };
使用默认 { "beforeColon": false }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", { "beforeColon": false }]*/
var obj = { "foo": 42 };
使用 { "beforeColon": true }
选项时,此规则不正确代码的示例
/*eslint key-spacing: ["error", { "beforeColon": true }]*/
var obj = { : 42 };
使用 { "beforeColon": true }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", { "beforeColon": true }]*/
var obj = { "foo" : 42 };
afterColon
使用默认 { "afterColon": true }
选项时,此规则不正确代码的示例
/*eslint key-spacing: ["error", { "afterColon": true }]*/
var obj = { "foo": };
使用默认 { "afterColon": true }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", { "afterColon": true }]*/
var obj = { "foo": 42 };
使用 { "afterColon": false }
选项时,此规则不正确代码的示例
/*eslint key-spacing: ["error", { "afterColon": false }]*/
var obj = { "foo"42 };
使用 { "afterColon": false }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", { "afterColon": false }]*/
var obj = { "foo":42 };
mode
使用默认 { "mode": "strict" }
选项时,此规则不正确代码的示例
/*eslint key-spacing: ["error", { "mode": "strict" }]*/
call({
foobar: 42,
bat2 * 2
});
使用默认 { "mode": "strict" }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", { "mode": "strict" }]*/
call({
foobar: 42,
bat: 2 * 2
});
使用 { "mode": "minimum" }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", { "mode": "minimum" }]*/
call({
foobar: 42,
bat: 2 * 2
});
align
使用 { "align": "value" }
选项时,此规则不正确代码的示例
/*eslint key-spacing: ["error", { "align": "value" }]*/
var obj = {
a: ,
bcde42,
fg: foo()
};
使用 { "align": "value" }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", { "align": "value" }]*/
var obj = {
a: value,
bcde: 42,
fg: foo(),
h: function() {
return this.a;
},
ijkl: 'Non-consecutive lines form a new group'
};
var obj = { a: "foo", longPropertyName: "bar" };
使用 { "align": "colon" }
选项时,此规则不正确代码的示例
/*eslint key-spacing: ["error", { "align": "colon" }]*/
call({
foobar: 42,
2 * 2
});
使用 { "align": "colon" }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", { "align": "colon" }]*/
call({
foobar: 42,
bat : 2 * 2
});
align
align
选项可以通过 beforeColon
、afterColon
、mode
和 on
选项进行额外的配置。
如果 align
被定义为一个对象,但没有提供所有参数,未定义的参数将默认设置为以下值
// Defaults
align: {
"beforeColon": false,
"afterColon": true,
"on": "colon",
"mode": "strict"
}
使用示例 { "align": { } }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", {
"align": {
"beforeColon": true,
"afterColon": true,
"on": "colon"
}
}]*/
var obj = {
"one" : 1,
"seven" : 7
}
/*eslint key-spacing: ["error", {
"align": {
"beforeColon": false,
"afterColon": false,
"on": "value"
}
}]*/
var obj = {
"one": 1,
"seven":7
}
align 和 multiLine
multiLine
和 align
选项可以不同,这允许对文件的 key-spacing
进行微调控制。如果 align
被配置为一个对象,则 align
不会从 multiLine
继承。
multiLine
在对象文字跨越多行时使用。align
配置在同一个对象中有一组属性时使用。例如
var myObj = {
key1: 1, // uses multiLine
key2: 2, // uses align (when defined)
key3: 3, // uses align (when defined)
key4: 4 // uses multiLine
}
使用示例 { "align": { }, "multiLine": { } }
选项时,此规则不正确代码的示例
/*eslint key-spacing: ["error", {
"multiLine": {
"beforeColon": false,
"afterColon":true
},
"align": {
"beforeColon": true,
"afterColon": true,
"on": "colon"
}
}]*/
var obj = {
"myObjectFunction": function() {
// Do something
},
"one": 1,
"seven": 7
}
使用示例 { "align": { }, "multiLine": { } }
选项时,此规则正确代码的示例
/*eslint key-spacing: ["error", {
"multiLine": {
"beforeColon": false,
"afterColon": true
},
"align": {
"beforeColon": true,
"afterColon": true,
"on": "colon"
}
}]*/
var obj = {
"myObjectFunction": function() {
// Do something
//
}, // These are two separate groups, so no alignment between `myObjectFunction` and `one`
"one" : 1,
"seven" : 7 // `one` and `seven` are in their own group, and therefore aligned
}
singleLine 和 multiLine
使用示例 { "singleLine": { }, "multiLine": { } }
选项时,此规则正确代码的示例
/*eslint "key-spacing": [2, {
"singleLine": {
"beforeColon": false,
"afterColon": true
},
"multiLine": {
"beforeColon": true,
"afterColon": true,
"align": "colon"
}
}]*/
var obj = { one: 1, "two": 2, three: 3 };
var obj2 = {
"two" : 2,
three : 3
};
何时不使用它
如果您对属性间距有其他约定,这些约定可能与可用选项不一致,或者如果您想同时允许多种样式,则可以安全地禁用此规则。
版本
此规则是在 ESLint v0.9.0 中引入的。