47

我正在为我的 ES6 程序使用 ESLint,并使用 AirBNB 规则集。出于充分和充分的理由,我for...of在我的代码中使用了该结构,但 ESLint 反对它,并发出no-restricted-syntax错误。

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

“无限制语法”:[“警告”,“WithStatement”]

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

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

有没有办法在 ESLint 文件中做到这一点?或者,如果失败了,至少有办法让它告诉我它的当前no-restricted-syntax配置是什么,所以我可以手动从中删除 ForOfStatement 吗?

4

2 回答 2

65

检查现有配置

基于当前的 master 分支,eslint-config-airbnb目前禁用了四种语法形式

  1. ForInStatement
  2. ForOfStatement
  3. LabeledStatement
  4. WithStatement

--print-config您可以使用 ESLint 的CLI 标志来验证这一点或查看是否有任何差异:

$ eslint --print-config file.js

ESLint 将打印出用于 lintfile.js的配置,您可以在那里找到no-restricted-syntax规则的配置。

覆盖no-restricted-syntax

如果您想覆盖 Airbnb 的预设,您可以在文件的rules部分中执行此.eslintrc.json操作:

{
    "rules": {
        "no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"]
    }
}

没有办法将规则配置为使用no-restricted-syntax从 Airbnb 的预设继承的配置,除了只有一种语法形式。

于 2017-02-14T22:48:55.650 回答
0

Add the below lines of code to restrict this error in your application in .eslintrc.js file

module.exports = {
  extends: ['airbnb-base', 'plugin:prettier/recommended'],
  plugins: ['no-only-tests'],
  rules: {
    'no-only-tests/no-only-tests': 2,
    "no-restricted-syntax": ["error", "ForInStatement", "LabeledStatement", "WithStatement"]
  },
};
于 2021-09-02T07:24:02.477 回答