2014-02-11 4 views
117

Я новичок в gulp и просматриваю примерные настройки. Некоторые люди имеют следующую структуру:Задача Gulp.js, возврат на src?

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

Другие люди имеют это:

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

мне интересно, что разница возвращение на СРК делает ??

ответ

145

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

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

+0

Отлично! спасибо за ответ Синдре. Теперь у вас глоток, как шарм. Любить это. –

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^