关闭特定文件的eslint规则


404

是否可以关闭整个文件的eslint规则?如:

// eslint-disable-file no-use-before-define 

(类似于eslint-disable-line。)我经常碰到,在某个文件中,我在许多地方违反了一个特定规则,该规则对该文件来说还可以,但是我不想禁用该规则。整个项目的规则,我也不想禁用该特定文件的其他规则。


1
您可以这样添加规则作为文件的第一行:/ * eslint no-use-before-define:2 * /
joaumg

2
完美,行得通,谢谢。我只是忽略了文档中的这一节:eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas

Answers:


404

您可以通过将配置放在文件顶部来关闭/更改文件的特定规则。

/* eslint no-use-before-define: 0 */  // --> OFF

or

/* eslint no-use-before-define: 2 */  // --> ON

更多信息


8
有没有一种方法可以在其中.eslintrc将所有这样的文件特定规则强制执行到文件顶部?
杰里米(Jeremy)2016年

9
@杰里米看到我的答案。您只需要向.eslintignore项目根目录添加文件即可。
prograhammer

似乎不起作用的html或ejs文件.eslintignore/* eslint no-use-before-define: 0 */ // --> OFF如何呢?
Jeet

可以在一行上执行多个忽略吗?
cheshireoctopus

4
我试过/ * eslint-禁用规则名称* /和它的工作
马科斯·佩雷拉

304

禁用文件的特定规则:

/* eslint-disable no-use-before-define */

请注意,eslint中存在一个错误,其中单行注释无法正常工作-

// eslint-disable max-classes-per-file
// This fails!

检查这篇文章


28
这将禁用该区块中的所有eslint规则,而不仅仅是no-use-before-define要忽略的规则
Jeremy

13
基本上,这就是整个想法。问题是“是否可以关闭整个文件的eslint规则?”
Wahome

27
@Wahome“是否可以关闭整个文件的eslint 规则?” 规则一词是单数。您的答案会关闭所有规则的复数形式。
spencer.sm

8
在描述中,他提到他想要禁用特定规则之类的东西-重新阅读问题!
Marwen Trabelsi

5
这是真的,这并不能解决全部问题,但还是因为这个线程有用的答案是顶部结果谷歌搜索时,“eslint忽略文件”
罗宾梅特拉尔

143

您可以通过在项目的根目录中创建一个文件来告诉ESLint 忽略特定的文件和.eslintignore目录:

.eslintignore

build/*.js
config/*.js
bower_components/foo/*.js

忽略模式的行为符合.gitignore规范。(不要忘记重新启动编辑器。)


10
是否可以仅忽略此文件中的特定规则?
J. Hesters,

我会投票赞成,但我的回答如下:D
OZZIE

2
非常好!您还可以使用**以递归方式在目录,子目录,子目录中添加文件。例如:spec/javascripts/**/*.js
维克多

完美-对于自动生成和频繁更改的文件(例如aws-exports.js,如果您使用的是AWS的Amplify或MobileHub)尤其有用
bogan27

这仍然发出警告
dan-klasson,

117

您还可以禁用/启用如下规则:

/* eslint-disable no-use-before-define */
... code that violates rule ...
/* eslint-enable no-use-before-define */

eslint-disable-line问题中提到的类似。如果您不想在重新启用复杂的规则配置后恢复它,则它可能是一种更好的方法。


我更喜欢这个,因为它可以还原我在eslint配置中定义的级别(警告,错误)。
Jankapunkt

这是对我有用的解决方案。关闭和打开规则无效。
JoshJoe

65

根据您要忽略的规则数量(全部或某些),以及禁用该规则的范围(行,文件,无处不在),我们得出2×3 = 6种情况。


1)禁用“所有规则”

情况1.1:您要禁用“一个或多个行”的“所有规则”

Put `/* eslint-disable-line */` at the **end of the line(s)**, 
or `/* eslint-disable-next-line */` right **before the line**.

情况1.2:您要禁用“一个文件”的“所有规则”

Put the comment of `/* eslint-disable */` at the top of the file.

情况1.3:您要禁用“某些文件”的“所有规则”

您可以通过3种方式执行此操作:

  1. 您可以使用1.2并/* eslint-disable */一个接一个地添加文件。
  2. 您可以将文件名放在中.eslintignore。这特别适用,如果您有要忽略的路径。(例如apidoc/**
  3. 另外,如果你不希望有一个单独的.eslintignore文件,你可以添加 "eslintIgnore": ["file1.js", "file2.js"]package.json按照指示在这里

2)禁用“某些规则”

情况2.1:您想要为“一个或多个行”禁用“某些规则”

You can put `/* eslint-disable-line quotes */` (replace `quotes` with your rules) at the end of the line(s), 
or `/* eslint-disable-next-line no-alert, quotes, semi */` before the line.

情况2.2:您要禁用“一个文件”的“某些规则”

Put the `/* eslint-disable no-use-before-define */` comment at the top of the file.  

这里有更多示例。

##案例2.3:您要为“某些文件”禁用“某些规则”

这不太直接。您应该按照此处的指示将它们放在您"excludedFiles""overrides"部分对象中。.eslintrc


4
PS。情况5:您要禁用“所有文件”的“所有规则”- npm uninstall eslint!:P
Aidin

2
另请注意,您只能对使用/* */样式注释eslint-disable// eslint-disable no-use-before-define是行不通的。它适用于// eslint-disable-next-line

56

最好在.eslintrc.js配置文件中添加“替代”。例如,如果您不想为所有以Actions结尾的js文件禁用驼峰规则,则在.eslintrc.js中的规则作用域后添加此代码。

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]

它不能回答OP有关特定文件的问题。
wscourge

替代文件内记录的绝佳选择。
约瑟夫·恩格弗罗斯特

8
答案严重不足!
亚当

很棒!恕我直言,这应该是公认的答案。这种方式保留在eslintrc文件中(保持源文件干净),并且可以覆盖特定文件的特定规则的行为。+1
akagixxer

48

要临时禁用文件中的规则警告,请使用以下格式的块注释:

/* eslint-disable */

这将禁用ESLint,直到

/* eslint-enable */

评论已达成。

您可以在此处阅读有关此主题的更多信息。


36

接受的答案对我不起作用(也许是eslint的其他版本...?我正在使用eslint v3.19.0),但确实找到了以下解决方案...

将以下内容放在文件顶部

/* eslint-disable no-use-before-define */

这将禁用整个文件的规则


7
...或多个,例如/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke

1
同样,接受的答案对我不起作用。两个区别:更改eslinteslint-disable和删除: 0。使用eslint@4.19.1。
hellatan

10
/*eslint-disable */

//suppress all warnings between comments
alert('foo');

/*eslint-enable */

它对我有用


4
这将禁用该区块中的所有eslint规则,而不仅仅是no-use-before-define要忽略的规则
Jeremy

这对我有所帮助,谢谢!还要考虑这个问题的答案,禁用所有规则也会禁用预期的规则
Fabiano Soriani

7

您可以将其放在文件顶部,例如:

/* eslint-disable no-console */

1

您可以使用以下命令关闭文件的特定规则 /*eslint [<rule: "off"], >]*/

/* eslint no-console: "off", no-mixed-operators: "off" */

版: eslint@4.3.0


万一只需要为一个完整的文件禁用一个规则,这可以很好地工作。
Umakant Patil

0

您可以配置eslint覆盖属性以关闭与如下所示的glob模式匹配的文件的特定规则。

在这里,我想关闭no-duplicate-string测试所有文件的规则。

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.