如何告诉 JSLint / JSHint 已经定义了哪些全局变量?

86

在我的项目中,我们有一些作为容器的全局变量:

MyProject.MyFreature.someFunction = function() { ... }

于是我将该脚本用于整个网站,JSLint / JSHint对此进行了投诉:

'MyProject'未定义

我知道我可以在每个JavaScript文件的顶部添加注释/*global MyProject*/。但是,我正在寻找一种方法来在某种配置文件中定义该注释,以便我不必逐个文件地添加该注释。

config/jshint.yml中的某些选项会很好。


你是使用Web应用程序(例如http://www.jshint.com/)还是在Node上运行它们? - RobH
我正在使用rake作为任务运行。实际上,我正在使用jshint_on_rails。 - Emiliano Zilocchi
这解释了我之前没听说过的 'config/jshint.yml' 文件。 - RobH
3个回答

87

对于 JSHint,您可以在项目目录中创建 .jshintrc 文件。

{
  "globals": { "MyProject": true }
}

2
谢谢。但是由于我正在使用jshint_on_rails,我可以在config/jshint.yml上设置这个选项:predef: 'MyProject' - Emiliano Zilocchi
你应该在你的问题中提到那个 :) - esamatti
你说得对,我漏掉了那部分内容。下次我会记住的。谢谢。 - Emiliano Zilocchi
12
关于使用这个的一个小提示:对于像 angular$ 这样的库,将其设置为 false。但是对于想要重新定义的全局变量,如 myApp,请将其设置为 true - polyclick

63

这只适用于全局变量

/* global MyProject */

在您的情况下,您需要

/* exported MyProject */

1
如果您只使用一个JavaScript文件,那么这是一个很好的答案,谢谢! - user9903

4
JSLint 的选项下方有一个文本区域,其中写着“在此预定义全局变量”,只需在运行检查之前将变量名称添加到其中即可。
JSHint 不允许您添加全局变量,但是您可以取消“当变量未定义”选项来禁止该警告。
如果您将其作为库运行,则 JSHint 库也具有用于全局变量的参数……详细信息请参见此处:http://jshint.com/docs/

他们似乎没有使用Web界面 - 但我正在寻找一种方法来在某种配置文件中定义该注释,以便我不必逐个文件添加此注释。在config/jshint.yml中提供某种选项会很好。 - Ian
1
我刚刚发现了config/jshint.yml下的'predef'属性,它是一个逗号分隔的属性。谢谢! - Emiliano Zilocchi
1
值得一提的是,predef 在 JSLint 中也存在(https://github.com/douglascrockford/JSLint/blob/master/jslint.js#L37)。 - ruffin
在具备Web Essentials的Visual Studio 2013和传统的解决方案文件夹层次结构的情况下,您可以将其放置在解决方案根文件夹中。 - George
不应该的负评。在这个答案被发布之后,问题才清楚地表明了正在使用Rails。+1 - superluminary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接