如何依次按顺序运行 Gulp 任务

2022-08-29 23:26:10

在这样的片段中:

gulp.task "coffee", ->
    gulp.src("src/server/**/*.coffee")
        .pipe(coffee {bare: true}).on("error",gutil.log)
        .pipe(gulp.dest "bin")

gulp.task "clean",->
    gulp.src("bin", {read:false})
        .pipe clean
            force:true

gulp.task 'develop',['clean','coffee'], ->
    console.log "run something else"

在任务中,我想运行,完成后,运行,完成后,运行其他内容。但我无法弄清楚。这件作品不起作用。请指教。developcleancoffee


答案 1

默认情况下,gulp 同时运行任务,除非它们具有显式依赖项。这对于像 这样的任务不是很有用,在这些任务中,您不想依赖,但您需要它们在其他所有任务之前运行。clean

我专门编写运行序列插件来解决此问题。安装后,按如下方式使用它:

var runSequence = require('run-sequence');

gulp.task('develop', function(done) {
    runSequence('clean', 'coffee', function() {
        console.log('Run something else');
        done();
    });
});

您可以阅读软件包自述文件上的完整说明 — 它还支持同时运行一些任务集。

请注意,这将在 gulp 的下一个主要版本中(有效地)修复,因为它们完全消除了自动依赖排序,并提供类似于允许您手动指定运行顺序的工具。run-sequence

但是,这是一个重大的重大变化,因此没有理由等待您今天可以使用。run-sequence


答案 2

这个问题的唯一好解决方案可以在 gulp 文档中找到:

var gulp = require('gulp');

// takes in a callback so the engine knows when it'll be done
gulp.task('one', function(cb) {
  // do stuff -- async or otherwise
  cb(err); // if err is not null and not undefined, the orchestration will stop, and 'two' will not run
});

// identifies a dependent task must be complete before this one begins
gulp.task('two', ['one'], function() {
  // task 'one' is done now
});

gulp.task('default', ['one', 'two']);
// alternatively: gulp.task('default', ['two']);