eslint - vue/script-indent 忽略对象字段
eslint - vue/script-indent to ignore object fields
我有以下 ESLint 规则设置:
"vue/script-indent": [
"error",
4,
{
"baseIndent": 1,
"switchCase": 1,
"ignores":
[
"[init.type=\"ObjectExpression\"]",
"[init.type=\"ArrayExpression\"]"
]
}
]
但是,对于以下情况(对象键的值是另一个对象),我希望忽略缩进。
这是 linter 的输出:
let example =
{
example:
{
test:
"test"
}
}
但我希望嵌套对象不受影响,所以看起来像这样:
let example =
{
example:
{
test:
"test"
}
}
所以它应该是一个对象,它位于一个应该被忽略的对象中。我也希望对象内的数组也被忽略(因此我忽略了对象和数组)
以下规则将 vue/script-indent
配置为忽略 .vue
中的嵌套 objects/arrays:
"vue/script-indent": [
"error",
4,
{
"baseIndent": 1,
"switchCase": 1,
"ignores": [
// nested objects, excluding top level of exported object (data, methods, computed, etc.)
"[value.type='ObjectExpression']:not(:matches(ExportDefaultDeclaration, [left.property.name='exports']) > * > [value.type='ObjectExpression'])",
// nested arrays
"[value.type='ArrayExpression']"
]
}
],
注意事项
在 TypeScript 中,class 属性(例如,@Prop private msg!: string
)的装饰器会导致 linter 错误,之后的每一行都会被 linter 忽略。 (vuejs/eslint-plugin-vue#834
) 解决方法: 插入一个空方法(即 _unused() {}
)作为 class 的第一个元素。
对象字段的顺序可能导致 linter 忽略整个对象 (vuejs/eslint-plugin-vue#833
)。 解决方法:确保对象的第一个字段是文字。
我有以下 ESLint 规则设置:
"vue/script-indent": [
"error",
4,
{
"baseIndent": 1,
"switchCase": 1,
"ignores":
[
"[init.type=\"ObjectExpression\"]",
"[init.type=\"ArrayExpression\"]"
]
}
]
但是,对于以下情况(对象键的值是另一个对象),我希望忽略缩进。
这是 linter 的输出:
let example =
{
example:
{
test:
"test"
}
}
但我希望嵌套对象不受影响,所以看起来像这样:
let example =
{
example:
{
test:
"test"
}
}
所以它应该是一个对象,它位于一个应该被忽略的对象中。我也希望对象内的数组也被忽略(因此我忽略了对象和数组)
以下规则将 vue/script-indent
配置为忽略 .vue
中的嵌套 objects/arrays:
"vue/script-indent": [
"error",
4,
{
"baseIndent": 1,
"switchCase": 1,
"ignores": [
// nested objects, excluding top level of exported object (data, methods, computed, etc.)
"[value.type='ObjectExpression']:not(:matches(ExportDefaultDeclaration, [left.property.name='exports']) > * > [value.type='ObjectExpression'])",
// nested arrays
"[value.type='ArrayExpression']"
]
}
],
注意事项
在 TypeScript 中,class 属性(例如,
@Prop private msg!: string
)的装饰器会导致 linter 错误,之后的每一行都会被 linter 忽略。 (vuejs/eslint-plugin-vue#834
) 解决方法: 插入一个空方法(即_unused() {}
)作为 class 的第一个元素。对象字段的顺序可能导致 linter 忽略整个对象 (
vuejs/eslint-plugin-vue#833
)。 解决方法:确保对象的第一个字段是文字。