已浏览验证的文件预期不会通过jshint验证
Are browserified files expected not to pass jshint validation?
考虑以下内容:
$ 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没有通过jshint验证。
此外,我使用的是browserfy的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)
帖子的第一个版本(END)
尽管如此,问题仍然存在:这是意料之中的事吗?看起来browsrify正在生成jshint无法验证的代码。
当然,生成的JS文件不会传递jshint。
请记住,像jshint这样的工具的目的是指出您可能在代码中犯下的错误。理论上,强制使用JavaScript语法的严格子集有助于防止您犯错误,并使您和其他人在未来更容易理解您的代码。
像浏览和缩小这样的工具的输出不适合人类消费。Minifier有意利用技术上合法但对人类不友好的语法,以最大限度地节省字节。
考虑:
if (iAmThirsty == true) {
drinkBeer();
}
通过重命名和语法转换的组合,迷你程序可能会将其变成类似于的东西
t&&d()
因为&&
短路,它们也会做同样的事情。后者肯定不会通过jshint(或代码审查),但这并不重要。你写了一些人类容易消化的东西,这就是未来要修改的东西。
您将永远无法处理已处理的输出;您将始终修改原始源代码并重新编译。Jshint的存在是为了确保您的源是高质量的。在处理过的输出上运行它是没有意义的。
相关文章:
- 正在验证8个真/假复选框或复选框中的2个
- 借助asp.net验证或java脚本对多个文本进行验证
- jQuery自定义验证比较多个输入的序列
- 使用html中的外部javascript进行数据验证
- 如何使用jquery Validation验证Formspread
- jquery中的文本框验证
- 在验证和发送邮件后更改联系人表单的 html
- 代码不会验证
- JS验证ajax返回的html中的表单数据
- 同步调用,直到用户通过angular验证为访问者
- 带有加号的电话号码验证(可选)
- 解析javascript表单验证器
- 两位数的月份日期验证
- 使用angularjs验证文本框中的电子邮件
- 验证Javascript中的Textarea
- 使用regex的jquery keydown绑定不会验证撇号和句点
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 正在删除node.js中已验证的网站
- 已浏览验证的文件预期不会通过jshint验证
- JSHint是Node.js语法验证器吗?