eslint - vue / script-indent для игнорирования полей объекта

У меня есть следующая настройка правила ESLint:

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

Однако я бы хотел, чтобы отступы игнорировались в следующем случае (когда значением ключа объекта является другой объект).

Это результат работы линтера:

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

Но я хочу, чтобы вложенный объект оставался нетронутым, чтобы он выглядел так:

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

Таким образом, это должен быть объект внутри объекта, который следует игнорировать. Я также хотел бы, чтобы массивы внутри объектов также игнорировались (поэтому мои игнорирования имеют объект и массив)


person A. L    schedule 18.02.2019    source источник
comment
@GarisMSuero ага, забыл исправить.   -  person A. L    schedule 19.02.2019
comment
@ A.Lau На всякий случай мой отредактированный код не исправляет отступ. Они оба по-прежнему выглядят одинаково   -  person iRohitBhatia    schedule 19.02.2019
comment
по крайней мере, эти фигурные скобки расположены по-другому: D   -  person messerbill    schedule 19.02.2019
comment
@messerbill Если бы только это было задумано! Ура, я исправил. :)   -  person iRohitBhatia    schedule 19.02.2019
comment
@messerbill да, я просто хочу, чтобы отступы были другими.   -  person A. L    schedule 19.02.2019
comment
посмотрите здесь github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/   -  person messerbill    schedule 19.02.2019
comment
@messerbill Я не уверен, как писать узлы AST, я показал, что пробовал, но похоже, что это не работает.   -  person A. L    schedule 19.02.2019
comment
@ A.Lau Вы хотите, чтобы массивы и вложенные объекты полностью игнорировались (не трогались)? Или отформатировал по другому? Вопрос создает впечатление, что вы хотите и того, и другого, что не представляется возможным с eslint-plugin-vue. Если это не так (вы хотите, чтобы не трогали только массивы / вложенные объекты), у меня есть ответ :)   -  person tony19    schedule 24.02.2019
comment
@ tony19 да, так что вложенные массивы / объекты нельзя трогать. Я обновлю свой вопрос, чтобы показать   -  person A. L    schedule 24.02.2019
comment
@ tony19 у тебя есть ответ?   -  person A. L    schedule 25.02.2019


Ответы (1)


Следующее правило настраивает 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']"
        ]
    }
],

Предостережения

person tony19    schedule 25.02.2019