2015-07-28 42 views
0

我正在嘗試編寫一個gulp插件。您可以使用這樣的:在Gulp插件中處理多個文件

var gulp = require('gulp'), 
    codo = require('gulp-codo'); 

gulp.task('doc', function() { 
    return gulp.src('*.coffee') 
    .pipe(codo()) // codo(name, title, readme, dir) 
}); 

我想* .coffee提供在當前目錄下的所有文件的CoffeeScript到CODO()。

在插件的輸入,像這樣處理的:

return through.obj(function(file, enc, cb) { 

    invokeCodo(file.path, name, title, readme, dir, function(err, data) { 
     if(err) { 
      cb(new gutil.PluginError('gulp-codo', err, {fileName: file.path})); 
      return; 
     } 
     file.contents = new Buffer(data); 
     cb(null, file); 
    }); 
}); 

我注意到,file.path只是第一個通配符匹配,而不是所有的比賽。我怎樣才能循環這每場比賽。我在這裏嘗試搜索,但只發現了有關在Gulp插件中生成多個輸出的問題。

謝謝。

回答

1

gulp-foreach可能會幫助你。那麼你的任務應該是這個樣子:

gulp.task('doc', function() { 
    return gulp.src('*.coffee') 
     .pipe(foreach(function(stream, file){ 
      return stream 
       .pipe(codo()) // codo(name, title, readme, dir) 
       .pipe(concat(file.name)); 
     }); 
}); 

另外,不要忘了包括gulp-foreach像這樣在你的文件的頂部:

var foreach = require('gulp-foreach'); 
相關問題