sar*_*tam 8 javascript build gulp
请查看以下内容gulpfile.js.
任务uglify取决于任务jshint.目前,当我运行时gulp,两个任务都会被执行,而不管jshint任务的结果如何.uglify当出现'jshint'错误时,我不希望执行任务.
换句话说,当有任何依赖任务时,如果前面的任务检测到错误,我不希望后续任务被执行.
有可能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']);
Run Code Online (Sandbox Code Playgroud)
请参考以下内容console output - not desired.虽然出现了jshint错误,但uglify任务成功完成.
我还创建了一个GitHub存储库,其中包含上面提到的样板代码.请在@ sarbbottam/gulp-workflow中找到相同的内容.
控制台摆脱了不受欢迎的工作流程

控制台超出预期的工作流程

因为JSHint,有一个内置的记者为此目的,fail.如果发生错误,它将停止您的gulp过程.
你只需重新定义你的task喜欢:
gulp.task('jshint', function () {
return gulp.src(['assets/js/**/*.js'])
.pipe(jshint('.jshintrc'))
.pipe(jshint.reporter('jshint-stylish'))
.pipe(jshint.reporter('fail'))
})
Run Code Online (Sandbox Code Playgroud)
对于其他任务,您可以在其error callback上添加并退出该过程以防止后续任务运行.
这是一个例子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)
})
Run Code Online (Sandbox Code Playgroud)
为了补充 Aperçu 的答案,如果您不想 gulp 退出(因为您有观察者正在运行),那么您可以执行以下操作:
gulp.task('min', function(done) {
return gulp.src(['assets/js/**/*.js'])
.pipe(ngmin())
.on('error', done);
});
Run Code Online (Sandbox Code Playgroud)
这将阻止依赖于该任务的下一个任务运行,但您的观察者仍将运行。
| 归档时间: |
|
| 查看次数: |
7891 次 |
| 最近记录: |