我有以下代码:
const pt = require('prepend-transform').default;
const writable = pt('[test-process]').pipe(process.stdout);
writable是目标流,它是process.stdout,所以如果我写入可写,我只是得到stdout,没有' [test-process]'在每一行前面。请注意,pt(x)
会返回转换流。
另一方面,如果我这样做:
const pt = require('prepend-transform').default;
const transform = pt('[test-process]');
transform.pipe(process.stdout);
然后我写入转换流,没有数据似乎使它成为process.stdout。
所以我需要使用读取流而不是转换流来执行此操作吗?
因此,我尝试使用可读的流来代替转换流:
const data = [];
const readable = new stream.Readable({
read: function (size) {
this.push(data.pop());
}
});
readable.pipe(pt('[test-process]')).pipe(process.stdout);
let log = function(){
Array.from(arguments).forEach(function(a){
data.push(a);
});
};
当我使用这样的可读内容时,没有任何内容写入stdout。
答案 0 :(得分:1)
'prepend-transform'
与可读流如果你这样做:
const PT = require('prepend-transform')
console.log(PT)
你得到:
{ default: [Function: default_1] }
所以,你必须做PT.default('[test-process]')
这是一个工作代码示例(带有可读流):
//:Example Readable Stream
var Readable = require('stream').Readable;
var rs = new Readable;
rs.push('beep ');
rs.push('boop\n');
rs.push(null);
//:PrependTransform Correct Usage Example
const PT = require('prepend-transform');
rs.pipe(PT.default('[child stdout]')).pipe(process.stdout);
示例输出:
[child stdout]beep boop