2015-06-19 114 views
0

这是我尝试设置ESLint'snew-cap规则接受"S"作为允许函数名称:ESLint:如何在文件中设置“新帽”规则的“capIsNewExceptions”选项?

/*eslint new-cap : [capIsNewExceptions : ["S"]] */ 
var S = require("string"); 
var lines = S(text).lines(); // <-- ESLint still gives a warning for cap 'S'! 

我ESLint解析器(内的IntelliJ)继续给我new-cap警告,如上所述。

我试图认真应用ESLint documentation

here,我看到一个例子规则,它看起来像这样:/*eslint quotes: [2, "double"], curly: 2* /,我在其中收集了quotescurly规则设定,那quotes规则包含两个选项,因此它被包含在括号因为文档中说If a rule has additional options, you can specify them using array literal syntax(它就是这个例子上面说的)。

然后,从the actual documentation for new-cap,我发现capIsNewExceptions作为一个选项提供,并且该选项的值应该是一个所需函数名称的数组 - 正如我在上面的代码中试图做的那样。

但它不起作用。我仍然收到ESLint警告。

什么是正确的语法,以支持使用定制new-cap规则中的capIsNewExceptions选项在JavaScript文件中使用以用于ESLint?

+0

这是一个很好的规则 - 为什么不跟进呢?当需要你想要的东西时,使用大写字母。否则,小写(所以功能,对象等)? – Cymen

+0

@Cymen我认为这是一个非常出色的例外,也是'Node''String'库的标准用法。 (请参阅https://www.npmjs.com/package/string#node-js) –

+0

这绝对是主观的,但我倾向于使用'string'作为该库。 – Cymen

回答

4

尝试

/*eslint new-cap: [2, {capIsNewExceptions: ["S"]}]*/ 
var S = require("string"); 
var lines = S(text).lines(); 

现在,它为什么这样工作?

对于将选项传递给使用数组的规则是正确的,但是在the docs中他们提到该数组的第一个元素始终是“规则ID”:从0到2的数字,它定义了如何应用该规则:
0 - 禁用规则,
1 - 使其成为一个警告,
2 - 使得它的错误。

我懒得检查,但我认为数组的其余部分作为contextoptions属性传递给规则本身。从new-cap规则的source code,它看起来像它期待只有一个选择,那是一个像capIsNewExceptionsnewIsCap可能的配置属性的对象,等

+0

就是这样。谢谢! –