gulp怎么按顺序执行任务 使用了gulp-sequence还是不能控制执行顺序

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

  

posted @ 2017-10-29 12:14  aredleave  阅读(2277)  评论(0编辑  收藏  举报