为什么Gulp看不到文件夹?

时间:2018-04-02 10:34:13

标签: node.js gulp

我使用Gulp 4,我有这个任务:

gulp.task('deploy', gulp.series('clean', 'handlers:all', 'deployment'));

该任务调用其他三项任务:

  1. 任务clean:删除构建文件夹。
  2. 任务handlers:all:重新创建构建文件夹并在其中添加文件。
  3. 任务deployment:将构建文件夹的内容传输到其他位置
  4. 我对deployment的任务有问题,看起来像这样:

    gulp.task('deployment', done => {
        gulp.src('./build/')
            .pipe(gulp.dest('../other-project/'));
    });
    

    gulp.src()找不到build文件夹,因为它已被任务clean删除。当我设置超时时没有问题。但这个解决方案很糟糕。

    gulp.task('deployment', done => {
        setTimeout(() => {
            gulp.src('./build/')
                .pipe(gulp.dest('../other-project/'));
        }, 2000);
    });
    

    如何解决这个问题?

    任务clean

    gulp.task('clean', done => {
        del('./build/');
        done();
    });
    

    任务handlers:all

    gulp.task('handlers:all', gulp.parallel('scripts', 'templates', 'styles', 'fonts', 'favicons', 'images', 'svg', 'dist'));
    

1 个答案:

答案 0 :(得分:1)

尝试将clean任务替换为下一个任务:

gulp.task('clean', done => {
  del('./build/').then(() => done());
});

它需要因为del包返回一个承诺而你应该告诉gulp等到它将被解决。另一个选项可以是del.sync

我不确定剩下的任务,但它应该遵循相同的过程。如果您有任何异步任务 - 请在正确的位置拨打done

它可能对您有用async vs sync

希望它有意义。