我在我的小项目中使用Gulp来运行测试和lint我的代码.当任何这些任务失败时,Gulp总是以返回码0退出.如果我手动运行jshint,它将以非零代码退出.
我是否需要以某种方式明确告诉Gulp返回有意义的值?这是Gulp的错吗,还是gulp-jshint和gulp-jasmine插件应该受到责备?
它给了我错误"之前坏线断线",因为我有如下代码
var one = 1
, two = 2
, three = 3
;
Run Code Online (Sandbox Code Playgroud)
如果我把它,放在行的末尾而不是下一行的开头,它就不会抱怨.但我想以这种方式编码.有没有办法让它不显示这个警告?
我查看了JSHint的选项,但没有任何与此错误相关的内容.
我真的喜欢调整?以及我的三元运算符,当它们不适合一条线时,如下所示:
var myVar = (condition
? ifTrue
: ifFalse
);
Run Code Online (Sandbox Code Playgroud)
然而,JSHint抱怨:
在"?"之前坏线断线
JSHint为什么会有此警告?是否有任何讨厌(如分号插入等)它是在保护我,还是我可以安全地更改我的JSHINT配置以忽略它?
如何在使用Gulp时将JSHint 的输出显示在Visual Studio 2015的错误列表中,而不是仅输出到Task Runner?
我已经尝试过这个软件包,但除了格式化Gulp输出略有不同之外,似乎没有做任何事情.
这是我的gulpfile.js:
gulp.task('default', function () {
gulp.src(["Scripts/**/*.js"])
.pipe(jshint(".jshintrc"))
.pipe(jshint.reporter("jshint-visual-studio"));
});
Run Code Online (Sandbox Code Playgroud)
实际输出(在任务运行窗口中):

首选输出(在错误列表中):

请注意:我正在使用Visual Studio 2015,因此Web Essentials不再是JSHint的选项,因为功能已被删除.
我有以下几行:
imageUrl && (data.imageUrl = imageUrl);
Run Code Online (Sandbox Code Playgroud)
对于这一行,JSHint抱怨:
Expected an assignment or function call and instead saw an expression.
Run Code Online (Sandbox Code Playgroud)
我理解警告,但我想禁用它.我找不到怎么做的方法.任何的想法?
我有一个使用Karma + Jasmine和JSHint的Grunt设置.每当我在我的spec文件上运行JSHint时,我都会遇到一系列"未定义"的错误,其中大部分是Jasmine的内置函数.例如:
Running "jshint:test" (jshint) task
js/main.spec.js
3 |describe("loadMatrix()", function() {
^ 'describe' is not defined.
4 | it("should not assign a value if no arg is passed.", function() {
^ 'it' is not defined.
Run Code Online (Sandbox Code Playgroud)
(我也从我的规范要测试的JS文件中得到一些未定义的变量和函数错误,但我不确定为什么会这样,它可能是一个单独的问题.)
我的Karma配置文件包含frameworks: [ "jasmine" ]在其中,我没有为JSHint设置任何全局变量,.jshintrc因为我在Grunt中配置它,所以我没有文件.我确实尝试在我的Gruntfile中将Jasmine的函数添加为JSHint全局变量,但是将它们设置为true或者false没有区别 - 当JSHint运行时,错误仍然存在.
我错过了什么?我似乎无法做任何让JSHint在我的spec文件中跳过Jasmine函数的定义检查.
如果JSHint中存在错误,我希望我的Gulp构建失败.
根据gulp-jshint的文档,我可以使用"失败的记者".
但是以下不起作用:
gulp.task("lint", function() {
return gulp.src(JS_SOURCES)
.pipe(jshint())
.pipe(jshint.reporter("jshint-stylish"))
.pipe(jshint.reporter("fail"));
});
Run Code Online (Sandbox Code Playgroud)
即使JSHint中存在错误,上面的任务也始终以退出代码0返回.
我正在使用gulp 3.8.10和gulp-jshint 1.9.0.
gulp-jshint的github问题在这里和这里有讨论......但根据这些讨论,我认为上面的代码应该与gulp和gulp-jshint的最新版本一起使用.但是它不......
有没有人想过如何使用gulp-jshint正确地使构建失败?
我最近开始使用JSHint,它要求我使用"use strict"的函数形式.从那以后,AngularJS抛出一个错误:
"错误:参数'webAddressController'不是函数,未定义"
当我删除"use strict"的函数形式时,控制器加载正常.
控制器:
(function () {
"use strict";
function webAddressController($scope, $rootScope, web_address_service) {
// Do things
}
}());
Run Code Online (Sandbox Code Playgroud)
有没有人对这里发生的事情有任何见解?
我想将libs目录排除在lint之外.然而,ignores在options种植.jshintignore项目目录文件并不能libs被排除在外.
jshint: {
options: {
smarttabs: true,
ignores: ['public/js/libs/**/*.js']
},
all: [
'Gruntfile.js',
'public/js/**/*.js'
]
},
Run Code Online (Sandbox Code Playgroud)
咕噜版:
grunt-cli v0.1.11
grunt v0.4.2
grunt-contrib-jshint@0.7.2
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
我有一个.jshintrc在我的以下配置项目的根目录:
{
"node": true,
"smarttabs": true,
"undef": true,
"unused": true
}
Run Code Online (Sandbox Code Playgroud)
这适用于我在项目中与节点相关的所有内容,但不适用于与浏览器相关的脚本.哪些是坐在子文件夹中.
是否可以node在保留整个文件夹的其他选项的同时覆盖该选项?
如果我.jshintrc为浏览器端文件夹创建另一个文件,我必须再次告诉JSHint我的所有配置,尽管我实际上只是想取消设置该node选项.
我知道我可以在每个文件中设置此选项,但实际上我想避免这种情况.
提前谢谢了!
jshint ×10
javascript ×6
gulp ×3
gruntjs ×2
angularjs ×1
browser ×1
jasmine ×1
karma-runner ×1
node.js ×1
use-strict ×1