gulp怎么按顺序执行任务,
1、每个任务添加依赖任务
2、使用gulp-sequence插件,插件的使用参考:https://github.com/teambition/gulp-sequence
解决这个问题时碰到一个坑:gulp任务是异步的,task写法上可以省略return,但在需要同步执行任务时,这个return是不能省略的。
不知道这个知识点,让我浪费了整整一天时间。。。
每个任务添加依赖任务:
// webappRest
gulp.task('webappRest', ['clearBuild'],function(){
// 这个return不能省略的
return gulp.src([
inputSrcApp+'**/*',
'!'+inputSrcApp+'**/*.{css,html,js,jsp}'
])
.pipe(gulp.dest('./build/'))
});
// clearBuild 清除build目录
gulp.task('clearBuild',function(){
return gulp.src('build',{read: false})
.pipe(clean())
});
// clearRev 清除rev(js与css映射表)目录
gulp.task('clearRev',['webappRest'],function(){
return gulp.src('build/rev',{read: false})
.pipe(clean())
});
//执行default任务就可以实现:按clearBuild,webappRest,clearRev的顺序来同步执行
gulp.task('default',['clearRev');
使用gulp-sequence插件的写法:
// --------由于篇幅原因此处省略了多个任务--------
// webappRest
gulp.task('webappRest', function(){
return gulp.src([
inputSrcApp+'**/*',
'!'+inputSrcApp+'**/*.{css,html,js,jsp}'
])
.pipe(gulp.dest('./build/'))
});
// clearBuild 清除build目录
gulp.task('clearBuild',function(){
return gulp.src('build',{read: false})
.pipe(clean())
});
// clearRev 清除rev(js与css映射表)目录
gulp.task('clearRev',function(){
return gulp.src('build/rev',{read: false})
.pipe(clean())
});
//每个同步执行的任务组用[]包起来,用逗号隔开
//[]里面的任务将会异步执行
var gulpSequence = require('gulp-sequence');
gulp.task('buildoverlays',
gulpSequence(
['overlaysRestJs','overlaysRestCss'],
['overlaysLib','overlaysRestOther'],
'overlaysHtml'
)
);