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