关于ecmascript 6:如何仅针对ForOfStatement关闭ESLint的无限制语法规则?

How can I turn off ESLint's no-restricted-syntax rule just for ForOfStatement?

我将ESLint用于带有AirBNB规则集的ES6程序。出于充分充分的理由,我在代码中使用了for...of构造,但是ESLint对此对象进行了处理,从而发出了no-restricted-syntax错误。

http://eslint.org/docs/上的文档rules / no-restricted-syntax解释了如何在我的.eslint文件中指定它所针对的语法树节点集:例如,如果我不喜欢的只是with语句,则可以使用:

"no-restricted-syntax": ["warn","WithStatement"]

但是我不想指定一整套未经批准的构造,我只是想说我认为这样的构造还可以。在概念上类似于

ESlint.rules['no-restricted-syntax'].removeEntry('ForOfStatement');

的东西在ESLint文件中是否可以执行此操作?或者,如果失败,是否至少有一种方法可以告诉我它当前的no-restricted-syntax配置是什么,所以我可以从其中手动删除ForOfStatement?


检查现有的config

基于当前主分支,eslint-config-airbnb当前禁用四种语法形式:

  • ForInStatement
  • ForOfStatement
  • LabeledStatement
  • WithStatement
  • 您可以使用ESLint的--print-config CLI标志来验证这一点或查看是否存在任何差异:

    1
    $ eslint --print-config file.js

    ESLint将打印出来配置文件,它会用于填充file.js,并且您可以在其中找到no-restricted-syntax规则的配置。

    覆盖no-restricted-syntax

    如果要覆盖Airbnb \\的预设,则可以这样做在.eslintrc.json文件的rules部分中:

    1
    2
    3
    4
    5
    {
       "rules": {
           "no-restricted-syntax": ["error","ForInStatement","LabeledStatement","WithStatement"]
        }
    }

    没有任何方法可以配置规则以使用从Airbnb的预设继承的no-restricted-syntax配置语法形式。