【问题标题】:How to run multiple actions in one gulp task? [duplicate]如何在一个 gulp 任务中运行多个操作? [复制]
【发布时间】:2014-12-31 00:27:15
【问题描述】:

如何在一个 gulp 任务中运行多个操作?以下内容不起作用,因为事情似乎无序并导致各种奇怪的错误。我已经尝试过event-streammerge 就像How to perform multiple gulp commands in one task 一样,但这似乎不适用于del。

我知道我可以将它分成多个任务并使用 run-sequence 插件,但就像在链接的问题中一样,我不想让我的 Gulpfile 膨胀,任务永远不会单独运行并且在外面没有意义给定上下文。

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

    del('....');

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

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

});

【问题讨论】:

  • 但为什么不run-sequence?如果您关心“膨胀 Gulpfile”,您可以创建其他文件并 require 它们。

标签: javascript node.js npm gulp


【解决方案1】:

您需要将流分配到变量中,然后将它们与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);
});

这将首先进行清理,等到完成,然后运行您的其他操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-01
    相关资源
    最近更新 更多