gulp怎么按顺序执行任务,javascript
一、每一个任务添加依赖任务css
二、使用gulp-sequence插件,插件的使用参考:https://github.com/teambition/gulp-sequencehtml
解决这个问题时碰到一个坑:gulp任务是异步的,task写法上能够省略return,但在须要同步执行任务时,这个return是不能省略的。java
不知道这个知识点,让我浪费了整整一天时间。。。git
每一个任务添加依赖任务:github
// 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插件的写法:web
// --------因为篇幅缘由此处省略了多个任务-------- // 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' ) );