Запуск 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);
});
});
Вот сообщение о различиях