browserified文件预计不会通过jshintvalidation?

考虑以下:

$ cat example.js function f () { return 1; } exports.F = f; $ browserify example.js > exampleBundle.js $ jshint --verbose example.js $ jshint --verbose exampleBundle.js exampleBundle.js: line 1, col 187, Missing semicolon. (W033) exampleBundle.js: line 1, col 279, Missing semicolon. (W033) exampleBundle.js: line 1, col 301, Missing semicolon. (W033) exampleBundle.js: line 1, col 321, Missing semicolon. (W033) exampleBundle.js: line 1, col 407, Missing semicolon. (W033) exampleBundle.js: line 5, col 15, Missing semicolon. (W033) 6 errors $ 

此外,为什么值得, jquery-1.11.1.min.js不通过jshintvalidation。

而且,我正在使用browserify的4.2.1版本和jshint的2.5.6版本:

 $ browserify --v 4.2.1 $ jshint --v jshint v2.5.6 $ 

最后,如果我修改.jshintrc文件以包含表单的语句(从这里取得 ):

 $ cat .jshintrc { "browserify": true } $ 

错误依然存在。

第一版(BEGIN)

在这篇文章的第一个版本中,我收到一个错误,说明这个选项不被支持:

 example.js: line 0, col 0, Bad option: 'browserify'. (E001) 

但是,正如我们所指出的,我在2.5.3之前运行了一个jshint版本(特别是2.5.2)。

文章的第一个版本(完)

尽pipe如此,问题仍然存在:这是否是预期的? 它看起来像browserify生成的代码,不能通过jshintvalidation。

当然生成的JS文件不会通过jshint。

请记住,像jshint这样的工具的目的是指出你在代码中可能犯的错误。 从理论上讲,强制使用严格的JavaScript语法子集有助于防止您犯错误,并使您的代码更易于您和其他人在未来理解。

像browserify和缩小工具的输出不是为了人类的消费。 Minifiers故意利用技术上合法的语法,但人为不友好,以实现最大的字节节省。

考虑:

 if (iAmThirsty == true) { drinkBeer(); } 

通过重命名和语法转换的组合,缩小器可能会将其转化为如下forms:

 t&&d() 

因为&&短路,这些做同样的事情。 后者肯定不会通过jshint(或代码审查),但这并不重要。 你写了一些容易被人们消化的东西,这就是将来会被修改的东西。

你将永远不会处理输出; 您将始终修改原始来源并再次编译。 Jshint存在,以确保您的是高品质的。 在处理后的输出上运行它没有任何意义。

Interesting Posts