【发布时间】:2012-12-25 13:46:12
【问题描述】:
我正在尝试将 lint 与 Grunt 一起使用。我可以从命令行运行 Grunt,但它给了我很多错误。大多数情况下“'$'未定义”。甚至alert 都在抛出错误,“'alert' is not defined”。
我怎样才能绕过这些?
【问题讨论】:
标签: javascript jslint gruntjs
我正在尝试将 lint 与 Grunt 一起使用。我可以从命令行运行 Grunt,但它给了我很多错误。大多数情况下“'$'未定义”。甚至alert 都在抛出错误,“'alert' is not defined”。
我怎样才能绕过这些?
【问题讨论】:
标签: javascript jslint gruntjs
你需要告诉 JSHint(这是 Grunt 默认使用的 linter)关于被 linted 文件可用的全局变量。我假设您在页面上包含 jQuery,因此 $ 标识符(当然可以是各种其他库)。
您可以在每个文件中或在 Grunt 脚本中指定全局变量。要在文件中指定它们,您可以使用 global 指令。把它放在文件的顶部,或者在你使用全局的函数的顶部:
/*global $:false */
请注意,false 表示如果您覆盖 $,则会出现错误。如果您需要这样做的能力,请将其更改为 true。
如果您希望在 Grunt 脚本中指定全局变量,您可以将 globals 属性添加到 jshint 部分中的任何任务。例如:
grunt.initConfig({
jshint: {
someTask: {
globals: {
$: false
}
}
}
});
至于您收到的alert 消息,您需要告诉JSHint 您允许使用开发功能,例如alert 和console.log。为此,您可以在文件中使用jshint 指令(就像global 指令一样):
/*jshint devel:true */
或者您可以在 Grunt 脚本中为任务添加 options 属性:
someTask: {
globals: {
$: false
},
options: {
devel: true
}
}
请参阅JSHint docs,了解您可以使用的所有选项。
【讨论】:
globals 必须在 options 内
someTask: {
options: {
devel: true,
globals: {
$: false
}
}
}
【讨论】: