it-swarm.com.ru

Задача Gulp.js, вернуться на src?

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

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

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

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

Мне интересно, какая разница возврат на SRC делает ??

128
boldfacedesignuk

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

Без этого система задач не будет знать, когда она закончится. Прочитайте документы .

156
Sindre Sorhus

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

, например

// 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 работает ... но если мы не добавим return - как в примере ниже - тогда они будут работать синхронно, а не асинхронно; и скомпилированный 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

36
byronyasgur

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

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