Запуск jekyll в качестве дочернего процесса в Gulp/Node

Я пытаюсь создать сайт jekyll с помощью Gulp.js. Я читал, что не должен использовать плагин в этом вопросе.

Я изучал использование дочернего процесса, как это было предложено, но я продолжаю получать сообщение об ошибке:

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)

Здесь мой файл gulp:

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']);

Что я делаю неправильно? Я нахожусь Node 0.10.25, Win 7.

ИЗМЕНИТЬ Ранее у меня была ошибка Google ENOENT. Проверьте мой путь и Ruby, и я могу запустить jekyll из командной строки. Еще не радость.

Ответ 1

У меня также была эта проблема и я нашел ответ на использование spawn.

Проблема заключается в том, как Node находит исполняемые файлы в Windows. Подробнее об этом отвечу:

fooobar.com/questions/56390/...

Короче говоря, измените spawn('jekyll', ['build']) на spawn('jekyll.bat', ['build']), чтобы заставить нереститься.

Ответ 2

Итак, я использовал вместо exec. Здесь мой файл gulp:

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);
});
});

Вот сообщение о различиях