请找到gulpfile.js
的内容如下。
任务uglify
依赖于任务jshint
。目前,当我运行 gulp
时,无论 jshint
任务的结果如何,这两个任务都会执行。我不希望在出现“jshint”错误时执行 uglify
任务。
换句话说,当存在依赖任务时,如果前面的任务检测到错误,我不希望执行后续任务。
在 gulp
中有可能吗?
var gulp = require('gulp');
var jshint = require('gulp-jshint');
var uglify = require('gulp-uglify');
gulp.task('jshint', function () {
return gulp.src(['assets/js/**/*.js'])
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('jshint-stylish'));
});
gulp.task('uglify', ['jshint'], function() {
return gulp.src('assets/js/**/*.js')
.pipe(uglify())
.pipe(gulp.dest('assets-min/js/'));
});
gulp.task('default', ['jshint', 'uglify']);
请引用下面的控制台输出 - 不需要
。尽管出现了 jshint
错误,但 uglify
任务成功运行。
我还创建了一个 GitHub 存储库,其中包含上述内容的样板代码。 请在 @sarbbottam/gulp-workflow 找到相同的内容.
控制不需要的工作流
控制台超出预期的工作流程
最佳答案
对于 JSHint
,有一个用于此目的的内置报告程序,fail
。如果发生错误,它将停止您的 gulp
进程。
您只需重新定义您的任务
,例如:
gulp.task('jshint', function () {
return gulp.src(['assets/js/**/*.js'])
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('jshint-stylish'))
.pipe(jshint.reporter('fail'))
})
对于其他任务,您可以在其上添加一个错误回调
并退出进程以防止后续任务运行。
这是一个使用 ngmin
的例子(因为 uglify
很难破解,但它是一样的):
function handleError (err) {
console.log(err.toString())
process.exit(-1)
}
gulp.task('min', function () {
return gulp.src(['assets/js/**/*.js'])
.pipe(ngmin())
.on('error', handleError)
})
关于javascript - 依赖任务的 gulp 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966781/