我想知道如何准确地操作我的 Gulp 插件的输出,例如,无论有多少文件传递给插件,它都会用字符串包装输出。目前我不知道最后一个文件何时完成。
下面的超级简化示例将迭代 3 个文件,并将创建一个名为的新文件output.js
,其中将包含三倍的字符串xxx
(xxxxxxxxx)。
我希望插件本身包装内容,因此输出将是:+xxxxxxxxx+
.
我该怎么做?谢谢!
吞吐文件
var gulp = require('gulp');
var concat = require('gulp-concat');
var foo = require('./index');
gulp.task('default', function() {
gulp.src([a.html, b.html, c.html])
.pipe(foo())
.pipe(concat('output.js'))
.pipe(gulp.dest('./test/output'))
});
最基本的 gulp 插件(index.js):
var through2 = require('through2'),
gutil = require('gulp-util');
var PLUGIN_NAME = 'foo';
module.exports = function( options ){
// through2.obj(fn) is a convenience wrapper around
// through2({ objectMode: true }, fn)
return through2.obj(function( file, enc, callback ){
file.contents = new Buffer( 'xxx' );
this.push(file);
callback();
});
}
我知道文件目前只是简单地返回修改,但我不明白的是如何附加文本并返回我想要的连接结果,同时保持它符合 Gulp 工作标准。
“真正的”插件实际上应该用以下方式包装文件结果:
var foo = { FILES_CONTENT }
whereFILES_CONTENT
实际上是所有文件的串联字符串:
"file_name" : "file_content",
"file_name" : "file_content",
...