使ESLint适用于其他人加载的文件

时间:2016-08-07 17:53:30

标签: eslint

我有一组脚本,其中一个脚本加载另一个脚本文件并使用其中定义的函数。

例如,假设我有main.js脚本,其中包含以下来源

load("helper.js");
var stdin = new java.io.BufferedReader( new java.io.InputStreamReader(java.lang.System['in']) );
function readline() {
    var line = stdin.readLine();
    return line;
}
var N = parseInt(readline());
for(var i = 0; i<  N; i++)
{
    print("fd630b881935b5d43180ff301525488a");
    var num = parseInt(readline());
    var ans = perfectNumberCheck(num);
    print(ans);
    print("dc29e6fa38016b00627b6e52956f3c64");
}

我有另一个脚本文件helper.js,其中包含以下来源

function perfectNumberCheck(num) {
    if(num == 1) 
    {
        return 0;
    }
    var halfNum = (num/2) + 1;
    var sum = 0;
    var retVal = 0;
    for(var i=1 ; i < halfNum; i++){
        if(num % i === 0){
            sum = sum + i;  
        }
    }
    if(sum == num){
        retVal = 1;
    }
    else {
        retVal = 0;
    }
    return retVal; 
}

可以看出,main.js使用函数perfectNumberCheck。现在,当我使用eslint main.js helper.js或使用eslint *.js对这两个文件运行ESLint时,即使no-unused-vars中使用了'perfectNumberCheck' is defined but never used错误main.js,我也会收到libnl-genl-3-dev错误# Use libnl 3.2 libraries (if this is selected, CONFIG_LIBNL20 is ignored) CONFIG_LIBNL32=y }。

我想在配置中保留此错误,但不希望ESLint在这种情况下显示它。

有没有办法让ESLint解决这些依赖关系,而无需将整个代码写入单个脚本文件中?

1 个答案:

答案 0 :(得分:0)

您可以向/* exported perfectNumberCheck */添加helper.js之类的评论,告诉no-unused-vars该功能在该文件之外的其他位置使用:

/* exported perfectNumberCheck */
function perfectNumberCheck() {
    // ...
}

ESLint本身会单独删除每个文件,因此它不会解析其他文件中定义的标识符。 /* exported ... */ commentglobals允许您通知ESLint其他文件中的依赖项。

由于导出的注释旨在用于指示存在于全局范围内的其他地方使用的名称,因此当文件的源不在全局范围内时,它们不起作用。具体来说,引用文档:

  

请注意,/* exported */对以下任何内容均无效:

     
      
  • 当环境为nodecommonjs
  • 时   
  • parserOptions.sourceTypemodule
  • 时   
  • ecmaFeatures.globalReturntrue
  • 时