2014-02-11 23 views
117

我是新來的吞嚥,並一直在尋找通過示例設置。 有些人具有以下結構:Gulp.js任務,在src上返回?

gulp.task("XXXX", function() { 
    gulp.src(".... 

其他人有這樣的:

gulp.task("XXXX", function() { 
    return gulp.src(".... 

我想知道在SRC的回報能起到什麼作用?

回答

145

return表明該任務是異步的。 gulp.src()返回一個流,所以它是異步的。

沒有它,任務系統不知道它何時完成。閱讀docs

+0

非常好!感謝Sindre的回覆。現在喝一口就像魅力一樣。愛它。 –

+0

真棒,我正在尋找:) –

+12

這是否意味着,你*必須*返回時使用'gulp.src()'? 如果你不返回'gulp.src()',會發生什麼? – jbandi

21

我發現這有幫助,如果你有多個流每個任務。您需要組合/合併多個流並返回它們。

var gulp = require('gulp'); 
var merge = require('gulp-merge'); 

gulp.task('test', function() { 
    var bootstrap = gulp.src('bootstrap/js/*.js') 
     .pipe(gulp.dest('public/bootstrap')); 

    var jquery = gulp.src('jquery.cookie/jquery.cookie.js') 
     .pipe(gulp.dest('public/jquery')); 

    return merge(bootstrap, jquery); 
}); 

另一種方法,使用大口大口任務定義結構將是:

var gulp = require('gulp'); 

gulp.task('bootstrap', function() { 
    return gulp.src('bootstrap/js/*.js') 
     .pipe(gulp.dest('public/bootstrap')); 
}); 

gulp.task('jquery', function() { 
    return gulp.src('jquery.cookie/jquery.cookie.js') 
     .pipe(gulp.dest('public/jquery')); 
}); 

gulp.task('test', ['bootstrap', 'jquery']); 
33

如果您有需要回報流的任務相關的任務等待他們的依賴任務完成在跑步之前。

// without return 
gulp.task('task1', function() { 
    gulp.src('src/coffee/*.coffee') 
     /* eg compile coffeescript here */ 
    .pipe(gulp.dest('src')); 
}); 

gulp.task('task2', ['task1'], function() { 
    gulp.src('src/*.js') 
     /* eg minfify js here */ 
    .pipe(gulp.dest('dest')); 
}); 
在你所期望的 TASK1完成這個例子

(如編譯CoffeeScript的或其他)之前TASK2運行...但是,除非我們添加回報 - 就像下面的例子 - 然後它們將同步運行而不是異步的;並且編譯後的coffeescript將不會被縮小,因爲task2將不會等待任務1完成,因此不會在task1上編譯輸出。所以我們應該在這種情況下總是回來。

// with return 
gulp.task('task1', function() { 
    return gulp.src('**/*.coffee') 
     /* your operations here */ 
    .pipe(gulp.dest('dest')); 
}); 

gulp.task('task2', ['task1'], function() { 
    return gulp.src('**/*.js') 
     /* your operations here */ 
    .pipe(gulp.dest('dest')); 
}); 

編輯:這裏的配方,以便進一步解釋它。 https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md