Gulp.js-taak, terugkeer op src?

Ik ben nieuw in slikken en heb voorbeeldopstellingen bekeken.
Sommige mensen hebben de volgende structuur:

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

Andere mensen hebben dit:

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

Ik vraag me af welk verschil de retourop de src maakt??


Antwoord 1, autoriteit 100%

U returnom aan te geven dat de taak async is. gulp.src()retourneert een stream, dus deze is async.

Zonder dit zou het taaksysteem niet weten wanneer het klaar was. Lees de docs.


Antwoord 2, autoriteit 23%

Als je afhankelijke taken hebt, moet je de stream retournerenzodat de taken wachten tot hun afhankelijke taken zijn voltooid voordat ze zichzelf uitvoeren.

bijv.

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

in dat voorbeeld zou je verwachten dat task1voltooid is (bijv. het compileren van het coffeescript of wat dan ook) voordat task2wordt uitgevoerd … maar tenzij we return– zoals het voorbeeld hieronder – dan zullen ze synchroon lopen en niet asynchroon; en het gecompileerde coffeescript zal niet worden verkleind omdat task2niet heeft gewacht tot taak 1 is voltooid en dus de gecompileerde uitvoer van task1niet oppikt. In deze omstandigheden moeten we dus altijd terugkeren.

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

Bewerken:Het recept hier legt het verder uit. https://github.com/gulpjs /gulp/blob/master/docs/recipes/running-tasks-in-series.md


Antwoord 3, autoriteit 16%

Ik vond dit handig als je meerdere streams per taak hebt. Je moet de meerdere streams combineren/samenvoegen en ze retourneren.

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

Het alternatief, met behulp van de taakdefinitiestructuur van Gulps, zou zijn:

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

Other episodes