- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果 JSHint 中有错误,我希望我的 Gulp 构建失败。
根据documentation of gulp-jshint我可以使用“失败报告者”。
但是以下方法不起作用:
gulp.task("lint", function() {
return gulp.src(JS_SOURCES)
.pipe(jshint())
.pipe(jshint.reporter("jshint-stylish"))
.pipe(jshint.reporter("fail"));
});
即使 JSHint 中存在错误,上述任务也始终返回退出代码 0。
我正在使用 gulp 3.8.10 和 gulp-jshint 1.9.0。
gulp-jshint的github issues中有讨论here和 here ...但根据这些讨论,我认为上面的代码应该适用于最新版本的 gulp 和 gulp-jshint。然而它并不...
有人知道如何使用 gulp-jshint 正确地使构建失败吗?
最佳答案
TLDR;在 GulpJS 在稳定版本中提供良好的解决方案之前,请使用 Bahmutov on GitHub 建议的解决方法.
他使用自己的过滤器创建了一个解决方法:
var map = require('map-stream');
var exitOnJshintError = map(function (file, cb) {
if (!file.jshint.success) {
console.error('jshint failed');
process.exit(1);
}
});
gulp.task('lint', function() {
gulp.src('example.js')
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'))
.pipe(exitOnJshintError);
});
长答案
此问题已作为问题发布在 GitHub 上: How to fail gulp build? #6 。特别关注Bahmutov's comment .
他提出的解决方案(黑客)是添加自己的过滤器,并在出现提示错误时执行 process.exit(1);
,如下所示:
var map = require('map-stream');
var exitOnJshintError = map(function (file, cb) {
if (!file.jshint.success) {
console.error('jshint failed');
process.exit(1);
}
});
gulp.task('lint', function() {
gulp.src('example.js')
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'))
.pipe(exitOnJshintError);
});
此问题链接到另一个问题 Plugin doesn't fail build #10 。他们在这里所说的基本上是 Gulp 应该处理构建失败的问题。这会导致 GulpJS 上报告的另一个问题: Controlling failing builds #113 。轮到他了,已移动到 "finish then fail" #20 。后一个问题已得到修复,可以在以下位置跟踪 Gulp JS 版本:changing this #347 .
所以,我们必须等待它的发布......
同时,我们可以使用我在 TLDR 文章顶部提到的解决方法;
我已经实现了我的 gulpfile.js
in task scripts-app
.
关于gulp-jshint : How to fail the build?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852814/
我是一名优秀的程序员,十分优秀!