2016-07-25 13 views
0

我使用GulpNode.js構建了我的Typescript應用程序。2次迭代中的Gulp文件處理

爲了我的目的,我需要掃描所有.ts文件,檢索一些信息,然後將此信息附加到一些.ts文件。

我使用gulp-modify將我的文件處理程序注入到pipe()

gulp.task(...., function() { 
    return gulp.src('*.ts') 
     .pipe(modify(statisticsProccesor)) 
     .pipe(modify(injectData)) 
     .pipe(gulp.dest(...)) 
}); 

statisticsProccesorinjectDatafunction(file, content)實現來處理從源流確切的文件。

使用這種方法,我可以從源檢索一些統計信息。但我無法注入它,因爲gulp.src()逐個處理所有文件(並且也調用所有處理程序)。

一旦我有2個文件1.ts2.ts這項任務將在這樣的順序對其進行處理:

1.ts: statisticsProccesor(), injectData() 
2.ts: statisticsProccesor(), injectData() 

,而我需要做這樣的魔力:

1.ts: statisticsProccesor() 
1.ts: statisticsProccesor() 
2.ts: injectData() 
2.ts: injectData() 

我試圖加2 gulp.src().pipe(modify)命令的任務。也可以將這些部分分成兩個不同的任務,逐個啓動。但是Gulp優化了執行,所以我不能預處理源並重復它們兩次。

+1

你** **可以用兩個任務做到這一點。你只需要正確提示執行順序:http://stackoverflow.com/questions/22824546/ –

回答

0

正如Sven所述,有必要將任務分解爲少數依賴任務。

gulp.task('doGood, ['subDo'], function(callback) { 
    gulp.src('*.ts') 
     .pipe(modify(statisticsProccesor)) 
     .on('finish', callback); 
}); 

gulp.task('subDo', function(callback) { 
    gulp.src('*.ts') 
     .pipe(modify(injectData)) 
     .pipe(gulp.dest(...)); 
}); 

gulp doGood 

一些重要的事情:

1. `subDo` should not return the stream 
2. `subDo` should contain `on('finish')` instruction