2016-03-25 36 views
0

我正在使用Gulp,并且在将传输的源代码写入它之前,我想删除/“清除”目录中的所有内容。Node.js streams =>在传输到它之前删除文件夹的内容

有没有办法将运行删除操作的流连接到执行读取/变换/写入操作的流?

现在我有这样的:

function transpileJSX() { 

    var d = domain.create(); 

    d.run(function() { 
     gulp.src('./public/static/app/js/views/**/*.js').pipe(react({harmony: true})) 
      .pipe(gulp.dest('./public/static/app/js/jsx')).on('end', function() { 
      d.emit('end'); 
      d.exit(); 
     }); 
    }); 

    return d; 


} 

function deleteJSX() { 
    return gulp.src('./public/static/app/js/jsx/**/*.js') 
     .pipe(clean({force: true})); 
} 


gulp.task('transpile-jsx', function() { 
    return transpileJSX().on('error', function (err) { 
     console.error(err); 
    }); 
}); 

gulp.task('delete-jsx', function (cb) { 
    return deleteJSX(); 
}); 

的问题是,这似乎并没有工作:

deleteJSX().pipe(transpileJSX()); 

的transpileJSX操作似乎开始deleteJSX操作开始前。当涉及到流时,这可能是预料之中的。但我认为我想通过确保整个删​​除操作首先完成来确保整个工作正常运行?

例如,如果我这样做:

gulp.task('some-task', ['delete-jsx','transpile-jsx'], function (done) { 

    someTask(done); 

}); 

吞气日志表明transpile-JSX任务删除,JSX任务结束前开始。

如果有人有一个模式用于清理文件夹,然后再进行转换,我想复制它谢谢!

回答

1

你已经快到了。你只需要重新安排任务相关,因为一饮而尽运行的最大并发任务:

gulp.task('transpile-jsx', ['delete-jsx'], function() { 
    //... 
}); 

gulp.task('some-task', ['transpile-jsx'], function() { 
    //... 
}); 

这将是一次更容易咕嘟咕嘟4次命中。在那里你将能够写出像这样的东西:

gulp.task('some-task', gulp.series('delete-jsx', 'transpile-jsx', function() { 
    //... 
})); 
+0

谢谢,这很有道理!你知道什么时候gulp 4会被释放? –

+1

由于[一些突出的重大更改](https://github.com/gulpjs/gulp/issues/1486),没有设置[截止日期](https://github.com/gulpjs/gulp/milestones) ,但是如果你想试试它,你可以[安装当前的开发版本](http://blog.reactandbethankful.com/posts/2015/05/01/how-to-install-gulp-4/)。我一直在玩它,并没有遇到任何问题,但YMMV。 –

相关问题