2016-08-03 50 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)); 
});