将多个转换组合为一个

  • 本文关键字:一个 组合 转换 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', function () {
  return gulp.src('src/**/*.html')
    // ---- begin ---
    .pipe(some_action1())
    .pipe(some_action2())
    .pipe(some_action3());
    // ---- end ---
});

Some_Action1/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 是什么?

如何

您可以用管道和所有人提取任务功能,并使用Gulp-Merge调用它,我们可以在其中合并两组管道,

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,task_2和task_3。说那个任务: soseactions 需要task_1和task_2,而任务 aLlactions 需要所有三个任务。那么您可以:

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

最新更新