在 Gulp 插件中处理多个文件
Handle multiple files in a Gulp plugin
我正在尝试编写一个 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 插件中生成多个输出相关的问题。
谢谢。
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');
我正在尝试编写一个 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 插件中生成多个输出相关的问题。
谢谢。
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');