Node.js 通过管道将转换或可读流传输到process.stdout

Node.js 通过管道将转换或可读流传输到process.stdout,node.js,stream,Node.js,Stream,我有以下代码: const pt = require('prepend-transform').default; const writable = pt('[test-process]').pipe(process.stdout); writable是目标流,它是process.stdout,因此如果我写入到writable,我只得到stdout,而不在每行前面加“[test process]”。请注意,pt(x)返回一个转换流 另一方面,如果我这样做: const pt = require(

我有以下代码:

const pt = require('prepend-transform').default;
const writable = pt('[test-process]').pipe(process.stdout);
writable是目标流,它是process.stdout,因此如果我写入到writable,我只得到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);
     });
  };
当我像这样使用readable时,不会将任何内容写入stdout。

使用带有可读流的
'prepend-transform'

如果您这样做:

const PT =  require('prepend-transform')
console.log(PT)
你会得到:

{ default: [Function: default_1] }
因此,您必须执行
PT.default(“[testprocess]”)

下面是一个工作代码示例(具有可读流):

示例输出:

[child stdout]beep boop

额外:

在我尝试了
前置转换后,运气不佳,我决定使用ol'poke with console.log(),并找到了一种使用方法:p希望您能在我的答案中推断出工作代码。
[child stdout]beep boop