I am using ESLint for my ES6 program, with the AirBNB rule-set. For good and adequate reasons, I am using the for...of
construction in my code, but ESLint objects to it, issuing a no-restricted-syntax
error.
The documentation at http://eslint.org/docs/rules/no-restricted-syntax explains how I can specify in my .eslint
file the set of syntax-tree nodes that it objects to: for example, if all I dislike is the with
statement, I can use:
"no-restricted-syntax": ["warn", "WithStatement"]
But I don't want to specify a whole set of unapproved constructions, I just want to say that I consider one such construction OK. Something conceptually similar to
ESlint.rules['no-restricted-syntax'].removeEntry('ForOfStatement');
Is there a way to do this in the ESLint file? Or, failing that, is there at least a way to get it to tell me what its current no-restricted-syntax
configuration is, so I can manually remove ForOfStatement from it?
Based on the current master branch, eslint-config-airbnb
currently disables four syntax forms:
ForInStatement
ForOfStatement
LabeledStatement
WithStatement
You can verify this or see if there are any differences by using ESLint's --print-config
CLI flag:
$ eslint --print-config file.js
ESLint will print out the config it would use to lint file.js
, and you can find the config for the no-restricted-syntax
rule there.
no-restricted-syntax
If you want to override Airbnb's preset, you can do so in the rules
section of your .eslintrc.json
file:
{
"rules": {
"no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"]
}
}
There's no way to configure the rule to use the no-restricted-syntax
config inherited from Airbnb's preset excepting only a single syntax form.