Передача потока между двумя задачами gulp?

Мне не удалось найти документацию о том, как это делается в gulp, даже не уверен, что нужно сделать что-то вроде этого:

var fileStream;

gulp.task('lint', ['glob'], function () {
    var jshint = require('gulp-jshint');

    fileStream.pipe(jshint())
       .pipe(jshint.reporter('default'));    

});

gulp.task('glob', function () {
    fileStream = gulp.src([
        './js/**/*.js',
        '!**/node_modules/**'
    ]);
});

Это лучший способ сделать что-то подобное? Есть ли лучший способ "передать" поток, возвращенный/созданный 1 задачей, в некоторые другие задачи, так что для чего-то подобного мы не будем дублировать глобусы, все еще делая разные задачи "lint" и "glob". Это даже желательно в Gulp?

Спасибо!

Ответ 1

Очень распространенный шаблон в gulp строит

  • шаблоны собираются в одну переменную пути
  • каждая задача начинается с плагина "src" (очень часто gulp.src) и заканчивается плагином "sink" (gulp.dest, или как в вашем примере, репортером).

Итак, для вашего примера:

var paths = {
    scripts:[
        './js/**/*.js',
        '!**/node_modules/**'
    ],
    css: './css/**'
};

gulp.task('lint', function () {
    var jshint = require('gulp-jshint');

    var stream = gulp.src(paths.scripts)
        .pipe(jshint())
        .pipe(jshint.reporter('default'));

    return stream;
});

gulp.task('cssmin', function () {
    var stream = gulp.src(paths.css)
        .pipe(cssmin())
        .pipe(gulp.dest("..."));

    return stream;
});

Почему бы не обмениваться потоками между задачами?

Gulp task orchestrator (и вскоре новый для gulp 4) имеет дело с зависимостями задач и их выполнением. Помните, что эти задачи могут быть асинхронными, поэтому вы не хотите делиться потоком, который может использоваться несколькими потребителями!