gpt4 book ai didi

gulp-jshint : How to fail the build?

转载 作者:行者123 更新时间:2023-12-02 10:43:21 24 4
gpt4 key购买 nike

如果 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中有讨论herehere ...但根据这些讨论,我认为上面的代码应该适用于最新版本的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com