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' ) );