Gulp 在两次吞咽任务之间通过一条小溪?

Gulp 在两次吞咽任务之间通过一条小溪?,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 ()

我还没有找到任何关于一个人是如何吞咽的文档,甚至不确定他是否应该这样做:

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”任务不同的情况下复制globbing。这是不是更适合大口喝呢

谢谢

gulp构建中非常常见的模式
  • 模式被收集到单个PATH变量中
  • 每个任务都以一个“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的任务编排器(很快Gulp4就会有一个新的编排器)正在处理任务依赖关系及其执行,所以你不想共享一个可以被多个消费者使用的流

有点让我希望流可以有一个类似于“承诺”的方面,流在特定时间点的状态可以在消费者之间传递,新的流状态可以被任意链接。@user2217522,根据当前的
gulp
docs,这最终是可能的(虽然它在示例中引用了
Q
库,而不是原生的
Promise
s),但它没有提到将Promise作为返回值传递给下一个任务。但是,您可以始终在顶层声明它,并在每个任务中解决/拒绝它。