我正在使用Gulp,我想删除/“清理”目录中的所有内容,然后再将编译后的源文件写入其中。
有没有办法将运行删除操作的流连接到执行读/转/写操作的流?
现在我有这个:
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);
});
gulp日志显示transpile-jsx任务在delete-jsx任务结束之前启动。
如果某人在转发文件夹之前有清洁文件夹的模式,我想复制它,谢谢!
答案 0 :(得分:1)
你已经快到了。您只需重新排列任务依赖项,因为gulp运行任务以实现最大并发性:
gulp.task('transpile-jsx', ['delete-jsx'], function () {
//...
});
gulp.task('some-task', ['transpile-jsx'], function () {
//...
});
一旦Gulp 4击中,这将更容易。在那里你可以写出像:
这样的东西gulp.task('some-task', gulp.series('delete-jsx', 'transpile-jsx', function () {
//...
}));