39

在将 Twitter Bootstrap 与其他 3rd-party JS 库一起使用时,我经常遇到这个问题,例如html5.js来自 WordPress 的“Twenty Twelve”主题,其中构建失败是因为jshint(或者jslint我认为在以前的 TB 版本中)由于第三个原因而引发错误-party JS 库,例如

\n##################################################
Building Bootstrap...
##################################################\n
js/html5.js: line 3, col 122, Expected ')' to match '(' from line 3 and instead
  saw ','.
js/html5.js: line 3, col 140, Expected an identifier and instead saw ')'.
js/html5.js: line 4, col 101, eval is evil.
js/html5.js: line 6, col 369, Confusing use of '!'.
js/html5.js: line 6, col 422, Confusing use of '!'.
js/html5.js: line 7, col 61, 'b' is already defined.
js/theme-customizer.js: line 26, col 26, Use '===' to compare with ''.

7 errors
make: *** [build] Error 1

我想避免修改第三方库或修改 TB 的 Makefile,因为这会导致以后升级出现问题;是我将第 3 方 JS 文件放入单独文件夹的唯一选择。

有没有办法让 jshint 或 TB 的构建过程忽略某些 JS 文件(也许通过一些.jshintrc我不知道的配置?)?

4

3 回答 3

98

所以有一个选项可以忽略 jshint 中的文件,但它不是设置在里面,而是设置在.jshintrc一个单独的文件.jshintignore中,这是有道理的。但是,虽然 jshint 会.jshintrc在项目的子目录中查找,但.jshintignore需要在项目根目录中。所以使用 Twitter Bootstrap,.jshintrc/jswhile.jshintignore需要放置在/.

因此,要解决我的问题中的问题/.jshintignore需要包含:

js/html5.js
js/theme-customizer.js

就是这样!

于 2013-02-07T00:09:29.733 回答
34

作为对 Lèse majesté回答的补充,您也可以在您的 JS 中写下这些注释,而 jshint 将忽略其间的代码:

// Code here will be linted with JSHint.
/* jshint ignore:start */
// Code here will be linted with ignored by JSHint.
/* jshint ignore:end */

或者,如果您只是希望 JSHint 不检查一行:

 // jshint ignore:line

参考:jshint 文档

于 2014-09-24T08:43:15.497 回答
14

对我来说最简单的解决方案是我只需添加// jshint ignore: start到我想要忽略的任何文件的顶部

于 2015-04-27T17:34:47.993 回答