Примечание : окончательную версию см. В нижней части этого ответа. Настроил его еще дальше, продолжая раскрашивать все.
Как только я немного сузил его, я смог найти некоторые лучшие результаты Google и нашел ответ, который был очень похож на мою проблему, но не совсем: Игнорировать отступ в литерале шаблона с помощью правила ESLint `indent`
Шаблон AST не работал для моего конкретного c случая (по крайней мере, первого). После того, как я попробовал это сделать с помощью AST Explorer, я использовал следующие шаблоны:
indent: ['error', 2, {
ignoredNodes: [
'TemplateLiteral > CallExpression > ObjectExpression',
'TemplateLiteral *'
]
]
Первый описывает точный сценарий в моем вопросе. Второй описывает похожий сценарий:
const a = `
<li
style=${someFunc(
'arg1',
'arg2'
})}
>Something</li>
`;
Похоже, что в конечном итоге это проблема, которую ESLint придется как-то исправить, поскольку одна проверка ObjectExpression
действительно запутывается внутри заполнителя литерала шаблона.
РЕДАКТИРОВАТЬ:
Я изменил второе выражение с TemplateLiteral > CallExpression
на TemplateLiteral > *
, потому что я нашел еще два слегка отличающихся сценария ios, которые еще не были пойманы. Я бы предпочел быть более конкретным c, но я не хочу указывать 80 различных сценариев ios.
РЕДАКТИРОВАТЬ 2:
Изменено TemplateLiteral > *
к TemplateLiteral *
вместо этого, потому что найдено еще больше, которые были вложены и не перехвачены > *
.
Теперь шаблоны только один:
indent: ['error', 2, {
ignoredNodes: [
'TemplateLiteral *'
]
]