[gulp]使用task執行連續的行為須注意

參考https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md

 

var gulp = require('gulp');
var del = require('del'); // rm -rf

gulp.task('clean', function() {
    return del(['output']);
});

gulp.task('templates', ['clean'], function() {
    var stream = gulp.src(['src/templates/*.hbs'])
        // do some concatenation, minification, etc.
        .pipe(gulp.dest('output/templates/'));
    return stream; // return the stream as the completion hint

});

gulp.task('styles', ['clean'], function() {
    var stream = gulp.src(['src/styles/app.less'])
        // do some hinting, minification, etc.
        .pipe(gulp.dest('output/css/app.css'));
    return stream;
});


// 此段代碼,clean看起來被 styles執行一次,被 templates執行一次,看起來是總共兩次,但其實只有一次喔!
//clean其實很容易出現問題,在還沒刪除就建立檔案,會有檔案位置使用中的問題, 詳細原理可以參考下面範例。
//build的任務是執行templates及styles。
//要注意的是 templates及styles 兩是異步的喔!
//1.若有先後順序的關係,不能擺再一起。
//2.function 為執行完畢後的callback方法,若有先後關係可以擺在裡面。
gulp.task('build', ['templates', 'styles'],function(){});