如何告诉 JSLint / JSHint 已经定义了哪些全局变量
Posted
技术标签:
【中文标题】如何告诉 JSLint / JSHint 已经定义了哪些全局变量【英文标题】:How to tell JSLint / JSHint what global variables are already defined 【发布时间】:2013-07-16 14:07:39 【问题描述】:在我的项目中,我们有一些作为容器工作的全局变量:
MyProject.MyFreature.someFunction = function() ...
然后我在整个网站上使用该脚本,JSLint / JSHint 抱怨:
'MyProject' 未定义
我知道我可以转到每个 javascript 文件并在其顶部添加注释 /*global MyProject*/
。但我正在寻找一种在某种配置文件中定义该注释的方法,因此我不必逐个文件添加此注释。
config/jshint.yml
中的一些选项会很好。
【问题讨论】:
您是在使用 Web 应用程序(例如 jshint.com)还是使用 node 运行它们? 我使用 rake 作为任务运行。实际上我正在使用 jshint_on_rails 这解释了我没听说过的 'config/jshint.yml' 文件。 【参考方案1】:对于 JSHint,您可以在您的项目目录中创建 .jshintrc
"globals": "MyProject": true
【讨论】:
谢谢。但是由于我使用的是 jshint_on_rails,所以我可以设置这个选项:predef: 'MyProject' on config/jshint.yml 你应该在你的问题中提到这一点:) 你说得对,我错过了那部分。下次我会记住的。谢谢 只是一个关于使用这个的小提示:将false
用于angular
和$
等库。但是把它放在true
上,用于你想要重新定义自己的全局变量,比如myApp
。【参考方案2】:
这仅适用于全局
/* global MyProject */
你需要
/* exported MyProject */
【讨论】:
如果您使用的是一个 JavaScript 文件,这是一个很好的答案,谢谢!【参考方案3】:JSLint 在选项下方有一个文本区域,其中显示predefine global variables here
。在运行检查之前,只需在其中添加变量名称即可。
JSHint 不允许您添加全局变量,但您可以取消选中 When variable is undefined
选项以禁止显示该警告。
JSHint 库也有全局参数,如果你将它作为库运行的话。 . .详情在这里:http://jshint.com/docs/
【讨论】:
听起来他们不是在使用网络界面 -But I'm looking a way to define that comment in some sort of config file so I don't have to go file by file adding this comment.
和 Some kind on option in the config/jshint.yml would be nice
我刚刚找到了,config/jshint.yml下的'predef'属性。这是一个逗号分隔的属性。谢谢!
值得一提的是predef
exists in JSLint too。
鉴于带有 Web Essentials 的 Visual Studio 2013 以及解决方案文件夹和项目子文件夹的常规层次结构,您可以将其放在解决方案根文件夹中。
不当投票。直到留下这个答案之后,这个问题才清楚地表明正在使用 Rails。 +1以上是关于如何告诉 JSLint / JSHint 已经定义了哪些全局变量的主要内容,如果未能解决你的问题,请参考以下文章
syntastic - 显示 jslint 和 jshint 错误