我正在使用gulp并且想要创建一个可以通过管道输入的功能,将输入传递给输出并将一行写入控制台。
例如:
this.src('/foo')
.pipe(myFunction)
.pipe(...)
有人可以帮我理解myFunction
需要的样子吗?
以下代码会停止其轨道中的流。如何确保流数据向前传递?
function myFunction(obj) {
var stream = new Stream.Transform({objectMode: true});
stream._transform = function () {
console.log('foo bar bam baz');
};
return stream;
}
答案 0 :(得分:2)
转换流意味着 - 毫无疑问 - 用于数据转换。一个例子是zlib流,它压缩写入它的数据,压缩的字节可以从同一个流中读出。
您正在创建一个不会转换任何内容的转换流 - 这很好。但是你仍然需要传递“变换值”(在这种情况下是相同的值)。在它的当前形式中,您的流只消耗所放入的内容._transform函数接收3个参数:数据,编码和回调,必须像下面这样调用:
function myFunction(obj) {
var stream = new Stream.Transform({objectMode: true});
stream._transform = function (data, encoding, callback) {
console.log('foo bar bam baz');
callback(null, data);
};
return stream;
}
来源:https://nodejs.org/api/stream.html#stream_transform_transform_chunk_encoding_callback