处理Gulp插件中的多个文件

时间:2015-07-28 11:43:21

标签: javascript plugins 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 个答案:

答案 0 :(得分: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');