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