【问题标题】:Node/Gulp synchronous deletion of directory within taskNode/Gulp同步删除任务内的目录
【发布时间】:2015-04-17 09:39:54
【问题描述】:

我有这样的任务:

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

  del('./build');

  gulp.src('./test/**/*')
    .pipe(gulp.dest('./build'));

});

本质上,这应该是先删除build目录,然后将一堆文件复制到一个新的build目录。

我的问题:这两个命令是异步的还是同步的?在将文件复制到同一目录的新版本之前,del 运行并完成显然很重要。

如果它们是异步的,那么如何使它们同步运行?我唯一的选择是将它们分解为单个任务并使del 任务依赖于“复制任务”吗?有没有办法让单个任务中的流同步?

【问题讨论】:

    标签: node.js asynchronous build gulp synchronous


    【解决方案1】:

    如果真的要同步删除目录,可以直接使用fs

    var fs = require('fs');
    
    gulp.task('test', function(){
    
      fs.rmdirSync('./build');
    
      return gulp.src('./test/**/*')
        .pipe(gulp.dest('./build'));
    
    });
    

    【讨论】:

    • 我假设Sync 暗示方法同步运行?
    【解决方案2】:

    如果你异步使用del(),你可以这样做:

    del('./build', function(err) {
      gulp.src('./test/**/*')
        .pipe(gulp.dest('./build'));
    });
    

    【讨论】:

      【解决方案3】:

      似乎函数del.sync 有效:

      del.sync('./build');
      

      documentation of "del" package

      【讨论】:

        猜你喜欢
        • 2015-10-08
        • 2014-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-04
        • 2014-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多