Beibehaltung Farben ausgeben, wenn Beschuss aus zu Knoten
Habe ich ein kleines Grunzen Aufgabe, die Muscheln aus über Knoten und läuft "composer installieren".
var done = this.async();
var exec = require('child_process').exec;
var composer = exec(
'php bin/composer.phar install',
function(error, stdout, stderr) {
done(error===null);
}
);
composer.stdout.on(
'data',
grunt.log.write
);
Wie Sie sehen können, bin ich die Ausgabe des stdout des Kind-Prozesses zu Grunzen.log. Alle Ausgaben zeigt sich, schön und gut wie erwartet, außer dass der output ist alles in meinem Standard-Konsole Farbe. Wenn ich "composer install" direkt bekomme ich hervorheben, dass die Lesbarkeit verbessert wird.
Da ich neu bin-node, Grunt und Beschuss aus im Allgemeinen bin ich unsicher, in welchem Teil des Systems die Färbung verloren geht, oder sogar, wie zu Debuggen effizient.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In einigen Fällen Kommandozeilen-Programme verhindern eine kolorierte Ausgabe nicht beim laufen über ein terminal, und somit müssen Sie anweisen, das Programm um die Ausgabe der ANSI-escape-Sequenzen.
In diesem Fall, es ist so einfach wie das hinzufügen eines '--ansi' - flag, zum Beispiel:
Mit spawn mit der option
stdio='inherit'
gearbeitet, umfassen Ausgabe Farbe.Aus der Dokumentation:
Hier ist ein Beispiel für den funktionierenden code:
Wollte ich exec Arbeit, aber ich habe nicht einen Weg finden, um auf die gleiche option.
inherit
nur druckt es aus und das ist alles.{stdio:'pipe'}
wie der 3. parameter von spawn(). Damit die Farbe angezeigt werden, dies zu tun:var colors = require('colors'); colors.enabled = true;
.Den
--colors
Flagge für mich gearbeitet. Knoten version 6.8.0...Folgende Allgemeine Beispiel drucken würde die Farben sollten alle zurückgegeben werden...
Wenn wie mich, Sie laichen ein Kind
node
Prozess im Gegensatz zu einem nicht-Knoten-Skript, können Sie feststellen, dass die--ansi
und--color
Optionen wird Ihnen wenig Erfolg für die Beibehaltung der farbigen Ausgabe von Kindnode
Prozesse.Stattdessen sollten Sie
inherit
Instanzen vonstdio
des aktuellen Prozesses.Meinen speziellen use-case beteiligt Verzweigung ein-Knoten-server ist als hintergrund-task zur Ausführung einer end-to-end-test-suite gegen eine aktive HTTP-Schnittstelle. Hier war meine endgültige Lösung: