I tarło proces potomny tak:Transform strumień poprzedzić ciąg do każdej linii
const n = cp.spawn('bash');
n.stdout.pipe(process.stdout);
n.stderr.pipe(process.stderr);
szukam transformacji strumień tak, że można poprzedzić coś jak „[procesowego dziecko]” na początek każda linia od dziecka, więc wiem, że stdio pochodzi od dziecka w porównaniu z procesem nadrzędnym.
Tak to będzie wyglądać:
const getTransformPrepender = function() : Transform {
return ...
}
n.stdout.pipe(getTransformPrepender('[child]')).pipe(process.stdout);
n.stderr.pipe(getTransformPrepender('[child]')).pipe(process.stderr);
czy ktoś wie, czy istnieje pakiet istniejących przekształcić tak, czyli jak napisać?
mam to:
import * as stream from 'stream';
export default function(pre: string){
let saved = '';
return new stream.Transform({
transform(chunk, encoding, cb) {
cb(null, String(pre) + String(chunk));
},
flush(cb) {
this.push(saved);
cb();
}
});
}
ale obawiam się, że nie będzie działać w przypadkach krawędzi - gdzie jeden klocek rozerwanie nie może zawierać całą linię (dla bardzo długich linii).
Wygląda na to, że odpowiedź na to jest tutaj: https://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/
ale z tego aneksu: https://twitter.com/the1mills/status/886340747275812865
, ale nie jest jeszcze kompletny, ponieważ nie obsługuje długich linii reprezentujących wiele wywołań ("danych"). –
Ta implementacja nie jest kompletna i potrzebuję pomocy, aby była poprawna. –
Myślę, że to ma odpowiedź - https://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/ –