Gulp 吞咽-将多个转换组合为一个

Gulp 吞咽-将多个转换组合为一个,gulp,Gulp,让我说,我有两个吞咽任务: gulp.task('pug', function () { return gulp.src('src/**/*.pug') .pipe(cache(pug())) // ---- begin --- .pipe(some_action1()) .pipe(some_action2()) .pipe(some_action3()); // ---- end --- }); gulp.task('html', fun

让我说,我有两个吞咽任务:

gulp.task('pug', function () {
  return gulp.src('src/**/*.pug')
    .pipe(cache(pug()))
    // ---- begin ---
    .pipe(some_action1())
    .pipe(some_action2())
    .pipe(some_action3());
    // ---- end ---
});

gulp.task('html', function () {
  return gulp.src('src/**/*.html')
    // ---- begin ---
    .pipe(some_action1())
    .pipe(some_action2())
    .pipe(some_action3());
    // ---- end ---
});
一些动作的代码克隆1/2/3让我很难过。所以我想把它们改成:

all_actions = /* do some_action1, some_action2, and, some_action3 */({/* ??? */});

gulp.task('pug', function () {
  return gulp.src('src/**/*.pug')
    .pipe(cache(pug()))
    .pipe(all_actions());
});

gulp.task('html', function () {
  return gulp.src('src/**/*.html')
    .pipe(all_actions());
});

什么是gulp方法,以及如何执行?

您可以使用管道和all提取任务函数,并使用调用它,我们可以通过以下方式合并两组管道:

merge(pipes_1, pipes_2)
代码

var gulpMerge = require('gulp-merge');

gulp.task('pug', function () {

    return gulpMerge(gulp.src('src/**/*.pug')
        .pipe(cache(pug())), allActions('src/**/*.pug'));
});

gulp.task('html', function () {

    return allActions('src/**/*.pug');
});


function allActions(source){
    return gulp.src(source)
        // ---- begin ---
        .pipe(some_action1())
        .pipe(some_action2())
        .pipe(some_action3());
        // ---- end ---
}
此外,不必组合管道,您可以保持任务的粒度,而是通过将所有操作任务作为依赖项任务调用来保持任务的小型化和专用化

假设您有任务1、任务2和任务3。假设任务:某些操作需要任务1和任务2,而任务所有操作都需要这三个任务。然后你可以有:

gulp.task('someActions', ['task_1', 'task_2']);

gulp.task('allActions', ['task_1', 'task_2', 'task_3']);