如何在一个gulp任务中运行多个操作?

时间:2014-12-30 11:35:44

标签: javascript node.js npm gulp

如何在一个gulp任务中运行多个操作?以下情况并不起作用,因为事情似乎无法正常运行并导致各种奇怪的错误。我在How to perform multiple gulp commands in one task中尝试了event-stream merge,但这似乎与del无关。

我知道我可以将它分成多个任务并使用run-sequence插件,但是在链接的问题中,我不想让我的Gulpfile膨胀,这些任务永远不会单独运行而且不会# 39;在特定背景之外有意义。

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

    del('....');

    gulp.src('....')
        .pipe(gulp.dest('....'));

    gulp.src('....')
        .pipe(gulp.dest('....'));

});

1 个答案:

答案 0 :(得分:3)

您需要将流分配到变量中,然后与es.merge一起运行(如果您不需要所有事件流,则可以使用merge-stream)。至于使用del运行,请查看设置执行清理操作的从属任务:

https://github.com/gulpjs/gulp/blob/master/docs/recipes/delete-files-folder.md

gulp.task('clean', function (cb) {
  del([
    'dist/report.csv',
    // here we use a globbing pattern to match everything inside the `mobile` folder
    'dist/mobile/**',
    // we don't want to clean this file though so we negate the pattern
    '!dist/mobile/deploy.json'
  ], cb);
});

然后您可以像这样定义其他任务:

var merge = require('merge-stream');

gulp.task('task', ['clean'], function () {
    var someOperation = gulp.src('./').pipe(gulp.dest('out'));
    var someOtherOperation = gulp.src('./assets').pipe(gulp.dest('out/assets'));

    return merge(someOperation, someOtherOperation);
});

这将首先执行清理,等待完成,然后执行其他操作。