Ich möchte einige Bash-Befehle am Ende der gulp.watch
Funktion hinzufügen, um meine Entwicklungsgeschwindigkeit zu beschleunigen. Also, ich frage mich, ob es möglich ist. Vielen Dank!Wie Bash-Befehle in Schluck ausführen?
Antwort
Verwendung https://www.npmjs.org/package/gulp-shell.
Eine handliche Kommandozeilen-Schnittstelle für schluck
Ich würde mit:
var spawn = require('child_process').spawn;
var fancyLog = require('fancy-log');
var beeper = require('beeper');
gulp.task('default', function(){
gulp.watch('*.js', function(e) {
// Do run some gulp tasks here
// ...
// Finally execute your script below - here "ls -lA"
var child = spawn("ls", ["-lA"], {cwd: process.cwd()}),
stdout = '',
stderr = '';
child.stdout.setEncoding('utf8');
child.stdout.on('data', function (data) {
stdout += data;
fancyLog(data);
});
child.stderr.setEncoding('utf8');
child.stderr.on('data', function (data) {
stderr += data;
fancyLog.error(data));
beeper();
});
child.on('close', function(code) {
fancyLog("Done with exit code", code);
fancyLog("You access complete stdout and stderr from here"); // stdout, stderr
});
});
});
Nichts wirklich "Schluck" hier in - vor allem Kind mit verarbeitet http://nodejs.org/api/child_process.html und Spoofing das Ergebnis in fancy-log
Nachdem ich einige Nachforschungen über Kindprozesse angestellt habe, habe ich mein Ziel erreicht, indem ich 'child_process.exec' endlich benutzt habe. Danke für deine Knoten-Ressource! – houhr
Vielen Dank, dass Sie seine Frage beantwortet haben, anstatt mit einem Link zu einem Plugin zu antworten. –
Während ich verstehen kann, wie Sie ein Plugin möglicherweise nicht verwenden möchten, glaube ich, dass meine Antwort immer noch die Frage adressiert. – Erik
Die einfachste Lösung ist so einfach wie:
var child = require('child_process');
var gulp = require('gulp');
gulp.task('launch-ls',function(done) {
child.spawn('ls', [ '-la'], { stdio: 'inherit' });
});
Es spielt keine Knoten Ströme und schluck Rohre verwenden, aber es wird die Arbeit tun .
Während es alternative Wege gibt (wie gulp-exec und gulp-spawn), druckt die gulp-shell die Ausgabe des Befehls sofort - was oft gewünscht wird. – jmu
Es gibt jetzt auch ['gulp-run'] (https://www.npmjs.com/package/gulp-run), das eine sauberere und intuitivere Oberfläche hat, IMO. –
gulp-shell ist auf der schwarzen Liste, siehe https://github.com/gulpjs/plugins/blob/master/src/blackList.json. –