Глоток.задача js, возврат на src?


Я новичок в глотке и просматривал примеры настроек. Некоторые люди имеют следующую структуру:

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

у других людей есть это:

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

мне интересно, какая разница возвращение на src делает??

3 124

3 ответа:

вы return чтобы указать, что задача является асинхронность. gulp.src() возвращает поток, поэтому он асинхронный.

без него система задач не знала бы, когда она закончила. Читайте docs.

Если у вас есть зависимые задачи нужно возвращение поток для задач, чтобы ждать их зависимых задач для завершения перед запуском себя.

например

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

в этом примере вы ожидаете задача 1 для завершения (например, компиляции coffeescript или что-то еще) до Задача 2 работает ... но если мы не добавим возвращение – как в примере ниже – тогда они будут работать синхронно не асинхронно; и скомпилированный coffeescript не будет уменьшен, потому что Задача 2 не будет ждать завершения задачи 1 и поэтому не будет подбирать скомпилированный вывод задача 1. Поэтому мы всегда должны возвращаться в этих обстоятельствах.

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

Edit: рецепт здесь объясняет это дальше. https://github.com/gulpjs/gulp/blob/master/docs/recipes/running-tasks-in-series.md

Я нашел это полезно, если у вас есть несколько потоков в задаче. Вам нужно объединить/объединить несколько потоков и вернуть их.

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

альтернативой, используя структуру определения задачи Gulps, было бы:

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