2016-08-03 53 views
0

我一直在试图找出在使用gulp-watch的任务后如何触发依赖任务。我想我在这里做的不好。所以,我想要做的是整个项目(+观察变化),然后完成我想触发一个依赖于这个项目的捆绑任务。由于转运任务已经包括在内,我不能把它作为依赖任务,但我需要一种方法来了解整个转运的完成时间,完成初始捆绑和每次更改后我想再次执行捆绑。如何在吞噬手表后触发依赖任务

如何做到这一点?

这是transpilation任务的样子:

gulp.task('babel',() => { 
    return gulp.src(babelSrc) 
    .pipe(watch(babelSrc,() => console.log('watch')) 
    .pipe(babel({...})) 
    .pipe(gulp.dest('build')); 
}); 

回调传递给观看将控制台日志watch每次文件已被transpiled,我只能使用后触发后才初始transpilation捆绑任务整个项目已经完成。

回答

0

我想要做的是transpile整个项目[...],并这样做了之后,我想触发一个任务捆绑

这是不可能的,你现在做的方式。当您插入.pipe()gulp-watch插件时,它会阻止该流发出'end''finish'事件。因此无法知道初始babel编译完成的时间。

您需要从手表中分离初始编译。 通过这种方式,您可以侦听'end'事件并从那里触发您的依赖任务。

gulp.task('dependend-task',() => { 
    ... 
}); 

function babelStream(stream) { 
    return stream 
    .pipe(babel({...})) 
    .pipe(gulp.dest('build')) 
    .on('end',() => gulp.start('dependend-task')); 
} 

gulp.task('babel',() => { 
    watch(babelSrc, {ignoreIntial:true, read:false}, function(file) { 
    return babelStream(gulp.src(file.path)); 
    }); 
    return babelStream(gulp.src(babelSrc)); 
});