eslint-vue / script-indent忽略对象字段

时间:2019-02-18 21:06:45

标签: javascript vue.js eslint eslintrc

我具有以下ESLint规则设置:

item

但是,在以下情况下(对象键的值是另一个对象),我希望忽略缩进。

这是短毛绒的输出:

"vue/script-indent": [
    "error",
    4,
    {
        "baseIndent": 1,
        "switchCase": 1,
        "ignores":
        [
            "[init.type=\"ObjectExpression\"]",
            "[init.type=\"ArrayExpression\"]"
        ]
    }
]

但是我希望嵌套对象保持不变,所以看起来像这样:

let example =
    {
        example:
            {
                test: 
                    "test"
            }
    }

因此它应该是在应忽略的对象内部的对象。我还希望对象内部也具有数组(因此为什么忽略对象具有对象和数组)

1 个答案:

答案 0 :(得分:5)

以下规则将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() {})作为类的第一个元素。

  • 对象字段的顺序可能会导致短绒棉子忽略整个对象(vuejs/eslint-plugin-vue#833)。 解决方法::确保对象的第一个字段为文字。