Gulp 连续任务作为流

Gulp consecutive tasks as stream

基本上,我的任务分为两部分。首先是为了发展。没有魔法,只有基本的东西才能让它发挥作用。它又快又好。后者用于生产。它很慢,我只想 运行 定期对其进行测试、调试、优化和生产。因此它们是两个独立的任务。

后面的生产任务确实依赖前面的任务,但是我想继续推流,好像后面的任务是前者的补充。

gulp.task('styles', function() {
    return gulp.src('src/sass/**/*.scss')
        .pipe(sass())
        .pipe(autoprefixer())
        .pipe(gulp.dest('dist/css'));
});

gulp.task('styles-production', function() {
    return runTaskAndUseStream('styles')
         // Continue where the styles task ended
         .pipe(uncss({
             ...
         }))
         .pipe(gulp.dest('dist/css'));
});

我希望 未记录的 gulp.start('task') 方法会 return 一个流,但不幸的是它没有。许多模块确实允许您 fiddle 使用流,但其中 none 个 return 作为流的 gulp 任务。

做什么?

一件(很可能)被认为是最佳实践的事情是将 uncss 任务合并到您的样式任务中,但是 运行仅当设置了某些标志时才启用它:

var gutil = require('gulp-util');

function production(task) {
    return (gutil.env.production ? task : gutil.noop());
}

gulp.task('styles', function() {
    return gulp.src('src/sass/**/*.scss')
        .pipe(sass())
        .pipe(autoprefixer())
        .pipe(production(uncss({

        })))
        .pipe(gulp.dest('dist/css'));
});

您需要的包:gulp-util 用于 noop 任务和参数解析

运行 它与 gulp styles --production

(未经测试,但你明白了)