Je Spawn un processus enfant comme ceci:Transformer flux préfixer chaîne à chaque ligne
const n = cp.spawn('bash');
n.stdout.pipe(process.stdout);
n.stderr.pipe(process.stderr);
Je cherche une transformation flux afin que je puisse préfixer quelque chose comme « [processus enfant] » au début de chaque ligne de l'enfant, donc je sais que le stdio vient de l'enfant par rapport au processus parent.
Il ressemblerait à ceci:
const getTransformPrepender = function() : Transform {
return ...
}
n.stdout.pipe(getTransformPrepender('[child]')).pipe(process.stdout);
n.stderr.pipe(getTransformPrepender('[child]')).pipe(process.stderr);
que quelqu'un sait s'il y a un package existant transform comme ceci ou comment écrire un?
J'ai ceci:
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();
}
});
}
mais je crains que cela ne fonctionnera pas dans les cas de bord - où un morceau rafale ne peut pas comprendre une ligne entière (pour les lignes très longues).
Il semble que la réponse est ici: https://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/
mais avec ce supplément: https://twitter.com/the1mills/status/886340747275812865
mais ce n'est pas encore terminé, car il ne peut pas gérer les longues lignes qui représentent plusieurs appels ('data'). –
cette implémentation n'est pas complète et j'ai besoin d'aide pour la corriger. –
Je pense que cela a la réponse - https://strongloop.com/strongblog/practical-examples-of-the-new-node-js-streams-api/ –