2014-02-18 4 views
12

Ich versuche, eine Jekyll-Site mit Gulp.js zu erstellen. Ich habe gelesen, dass ich kein Plugin in this question verwenden sollte.Ausführen von Jekyll als Kindprozess in Gulp/Node

Ich habe untersucht worden, ein Kind-Prozess mit, wie vorgeschlagen, aber ich erhalte eine Fehlermeldung:

events.js:72 
    throw er; // Unhandled 'error' event 
     ^
Error: spawn ENOENT 
    at errnoException (child_process.js:988:11) 
    at Process.ChildProcess._handle.onexit (child_process.js:779:34) 

Hier ist meine schluck Datei:

var gulp = require('gulp'); 
var spawn = require('child_process').spawn; 
var gutil = require('gulp-util'); 

gulp.task('jekyll', function(){ 
    spawn('jekyll', ['build'], {stdio: 'inherit'}); 
}); 

gulp.task('default', ['jekyll']); 

Was mache ich falsch? Ich bin auf Knoten 0.10.25, Win 7.

BEARBEITEN Ich hatte eine google um ENOENT Fehler zuvor. Habe meinen Pfad überprüft und Ruby ist da und ich kann jekyll von der Kommandozeile aus starten. Immer noch keine Freude.

Antwort

14

Ich hatte auch dieses Problem und fand die Antwort auf Laich verwenden.

Das Problem ist, wie Node ausführbare Dateien unter Windows findet. Für weitere Informationen schauen Sie sich diese Antwort:

https://stackoverflow.com/a/17537559

Kurz gesagt, spawn('jekyll', ['build'])-spawn('jekyll.bat', ['build']) zu arbeiten, um laichen zu erhalten ändern.

+0

SpikeMeister, Ich habe deine Antwort gerade gesehen, indem ich nach meinem eigenen Problem gegoogelt habe. Sorry hat das nicht akzeptiert und früher abgestimmt. Wissen Sie, ob der .bat-Fix auf Mac/Unix-Computern funktioniert? Mein Tag gemacht! – matthewbeta

+2

Re meinen vorherigen Kommentar. Sie können den Befehl basierend auf dem Betriebssystem festlegen: 'var jekyll = process.platform ===" win32 "? "jekyll.bat": "jekyll"; ' dann einfach ausführen: ' spawn (jekyll '[' build ']) ' – matthewbeta

8

Also endete ich stattdessen exec. Hier ist meine schluck Datei:

var gulp = require('gulp'); 
var exec = require('child_process').exec; 
var gutil = require('gulp-util'); 

gulp.task('jekyll', function(){ 
exec('jekyll build', function(err, stdout, stderr) { 
    console.log(stdout); 
}); 
}); 

Here's a post about the differences