最近我新开始的前端项目,或者后端 NodeJS 项目,总之涉及到 Javascript 的代码都刻意用了最严格 airbnb 规则进行检查,检查工具是 eslint。凡事总有例外,有个别情况下,我需要对某个文件,或者某一块代码,或者某一行代码禁用所有检查或禁用某条规则,毕竟这个规则太严了。最初遇到这种需求,我去 Google 搜索,后来意识到这些内容应该在官网写得很清楚。于是,这篇文章也从一份资料整理变成了官网翻译。

ESLint & airbnb

针对一块代码

/* eslint-disable */

alert('foo');

/* eslint-enable */

针对在 /* eslint-disable *//* eslint-enable */ 之间的代码禁用检查。

指定规则

跟上面类似,加上指定规则名称即可。

/* eslint-disable no-alert, no-console */

alert('foo');
console.log('bar');

/* eslint-enable no-alert, no-console */

针对整个文件

在文件开头加上 /* eslint-disable */

/* eslint-disable */

alert('foo');

指定规则

同样是在后面加上规则名称就可以了。

/* eslint-disable no-alert */

alert('foo');

针对一行代码

eslint-disable-line 禁用对当前行的检查,用 eslint-disable-next-line 禁用对下一行代码的检查。

alert('foo'); // eslint-disable-line

// eslint-disable-next-line
alert('foo');

/* eslint-disable-next-line */
alert('foo');

alert('foo'); /* eslint-disable-line */

指定规则

毫无意外,仍然是后面加规则名称。

alert('foo'); // eslint-disable-line no-alert, quotes, semi

// eslint-disable-next-line no-alert, quotes, semi
alert('foo');

alert('foo'); /* eslint-disable-line no-alert, quotes, semi */

/* eslint-disable-next-line no-alert, quotes, semi */
alert('foo');

关于插件

如果要禁用的规则名称属于某个插件,比如要禁用 eslint-plugin-examplerule-name 规则,那么规则名称就写成 example/rule-name

foo(); // eslint-disable-line example/rule-name
foo(); /* eslint-disable-line example/rule-name */

这个例子是针对一行代码禁用某个插件的一条规则,这个插件规则名称的写法适用于上述所有场景比如针对整个文件、一块代码的禁用。