在两个gulp任务之间传递流?

时间:2014-03-21 17:39:18

标签: 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' &安培; '水珠'不同的任务。这在Gulp中甚至是可取的吗?

谢谢!

1 个答案:

答案 0 :(得分:11)

gulp build中非常常见的模式

  • 模式被收集到单个路径变量
  • 每个任务都以" 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的任务协调器(很快就会出现一个新的Gulp 4)正在处理任务依赖及其执行。 Remember, those tasks can be async,因此您不想共享可供多个消费者使用的流!