indent的ESLint规则允许您在使用ignoredNodes
选项确定规则是否应该应用于该节点时指定忽略哪些节点。
我有以下代码,我想用这条规则忽略:
const a = b
? `c${
d
}`
: e
具体来说,d
和后续行的行被报告为有两个以上的空间。我想忽略规则中的那些行,但我无法弄清楚应该应用的节点。
节点类型指定为in this repo。我知道像这个代码中使用的三元表达式是一个ConditionalExpression
节点,它看起来像template literal node存在,但我不能让它工作。
我知道我可以使用eslint-disable-next-line
,eslint-disable
等,但我不想使用它们,因为每次出现时我都必须使用它们。
从简单的ast tree查看${foo}
,我确认它确实是TemplateLiteral
节点。但是我碰巧也知道那里的解决方案:你也需要选择它的孩子。这可以用TemplateLiteral > *
完成。你的解决方案无法正常工作的原因是因为ESLint
将免除TemplateLiteral
的缩进规则,但只有小的${
和}
部分,而不是内容。
这可以进入你的ESLintrc文件:
"indent": [{ "ignoredNodes": ["TemplateLiteral > *"] }]
对不起,没有人能够尽快回答你的问题。
要忽略模板文本中ESLint中的所有缩进和换行错误,包括函数调用或深度嵌套的JS语法,您可以使用"ignoredNodes": ["TemplateLiteral *"]
(不使用>
子选择器来定位所有后代。)
"rules": {
"indent": ["error", 2, { "ignoredNodes": ["TemplateLiteral *"] }],
"function-paren-newline": "off"
}
您还必须指定正常的缩进规则,例如"error", 2
强制执行2个空格或"error", "tab"
标签。
"function-paren-newline"
也在我的模板文字中出错,我也想禁用它(因为我正在扩展一个显示错误的现有ESLint配置)。