javascript - eslint - vue/script-indent 忽略对象字段
问题描述
我有以下 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
:
"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 中,类属性(例如
@Prop private msg!: string
)的装饰器会导致 linter 错误,之后的每一行都会被 linter 忽略。(vuejs/eslint-plugin-vue#834
)解决方法:插入一个空方法(即_unused() {}
)作为类的第一个元素。对象字段的顺序可能会导致 linter 忽略整个对象 (
vuejs/eslint-plugin-vue#833
)。解决方法: 确保对象将文字作为其第一个字段。
推荐阅读
- google-sheets - 如何使用 IFS 函数“关闭”我的索引公式?
- python-3.x - 该插槽不适用于 QListWidget itemClicked (pyqt)
- vue.js - 用户在 vuejs 中的 FullCalendar 切换事件
- c++ - 枚举可变参数模板参数包
- xml - 如何在 XML 中处理 # 和多个 tns:?
- reactjs - 单击主体上的侦听器(某些 div 除外)
- sql - HIVE:使用原始表中特定列的 n 值创建一个包含 n 列的新表
- r - 如何将日期转换为最近的周末(星期六)
- vbscript - 带小时和分钟的 VBS 时间范围
- java - Android Studio - gradle 警告:所有 com.android.support 库必须使用完全相同的版本规范