好的,请记住 JSLint 只是一个 JavaScript 文件,我使用的大多数 JSLint 插件都将源代码放在安装的某个地方(尽管 Visual Studio 插件将它嵌入到 dll 中!),所以你可以 总是让它做你想做的事[在合理的范围内]。
在您的情况下,绝对最坏的情况是您使用您希望 JSLint 假定的命名空间初始化预定义变量列表始终被认为在范围内。我将向您展示如何在 Brackets 中全局设置它,这可能并不总是最好的做法,如果您正在 linting 另一个项目,没有 有 Angular,好吧,你搞砸了 JSLint。
(老实说,我很失望 Brackets 在它的preferences.json 文件中没有global 作为全局变量。我想我应该提交一个补丁。)
我们有很多方法可以做到这一点。我要为standard 对象添加一个命名空间。您还可以通过添加到全局变量的browser 集合(我的 Bracket 安装的 jslint 文件中的第 497 行)来限制它的曝光。我们还可以创建一个新的 JSLint 指令选项,类似于browser。这不是快速'n'脏,但可能是不提交括号补丁的正确方法。但现在,让我们做一个快速的“n”脏修复。
我正在使用 Windows。如果你不是,YMWV。我不是每天都使用括号,所以我没有在生产编码环境中测试过这个。但是,如果有任何问题不起作用,我很想听听,我会看看是否能找出问题所在。
TL;博士。只是代码,女士。
如果您使用默认安装位置,您想要的 jslint.js 文件在这里:
C:\Program Files (x86)\Brackets\www\extensions\default\JSLint\thirdparty\jslint
(只是为了好玩,请注意我们使用的 JSLint 版本是 2011 年的!!?!来吧,括号家伙!)
standard 在我的文件中位于第 974 行。这是它最初的内容:
// standard contains the global names that are provided by the
// ECMAScript standard.
standard = array_to_object([
'Array', 'Boolean', 'Date', 'decodeURI', 'decodeURIComponent',
'encodeURI', 'encodeURIComponent', 'Error', 'eval', 'EvalError',
'Function', 'isFinite', 'isNaN', 'JSON', 'Math', 'Number', 'Object',
'parseInt', 'parseFloat', 'RangeError', 'ReferenceError', 'RegExp',
'String', 'SyntaxError', 'TypeError', 'URIError'
], false),
这是一个测试 JavaScript sn-p 我想使用我的全局对象 util 进行 lint:
/*jslint sloppy:true, white:true */
utils.spam();
utils.spammySpam();
smutils.spam();
我们只需将, 'utils' 添加到standard,就完成了。
standard = array_to_object([
'Array', 'Boolean', 'Date', 'decodeURI', 'decodeURIComponent',
'encodeURI', 'encodeURIComponent', 'Error', 'eval', 'EvalError',
'Function', 'isFinite', 'isNaN', 'JSON', 'Math', 'Number', 'Object',
'parseInt', 'parseFloat', 'RangeError', 'ReferenceError', 'RegExp',
'String', 'SyntaxError', 'TypeError', 'URIError', 'utils'
], false),
为了过于清楚,您可以将 'angular' 和 'MainController' 添加到您的 standard 对象中以代替 'utils'。
顺便说一句,Crockford(JSLint 的创建者和维护者)会讨厌我们这样做。我不真的责备他。
现在我收到smutils 的错误,但不是utils。幸运的是,全局指令仍然适用于这个设置:
/*jslint sloppy:true, white:true */
/*global smutils */
utils.spam();
utils.spammySpam();
smutils.spam();
我们又对 JSLint 友好了。
直接破解 JSLint 可能没有最受青睐的选项状态,但它确实有效。
顺便说一句,回复:Dave 的评论,“IMO JSLint 已被普遍弃用,取而代之的是 JSHint 或 JSCS”,我不太确定。举个例子,Brackets 开箱即用的是哪个?关于 JSLint 最好的部分是必须发生多少更少的主观讨论才能让一个大型团队在同一页面上。相信我,Crockford 不会告诉你做一些无可辩驳的错误。
他可能会伤害你的感情,他可能会要求你做一些一开始会伤害你的事情,但我真的认为 JSLint 可以很多教一个团队关于 JavaScript 最佳实践的知识。在跳转到 JSHint 之前,值得在 JSLint 中生活一段时间。