在Gulp / Node中运行jekyll作为一个subprocess

我正在尝试使用Gulp.js构build一个jekyll站点。 我读过,我不应该在这个问题上使用插件。

我一直在调查build议使用subprocess,但我不断收到错误:

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) 

这是我的大文件:

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

我究竟做错了什么? 我在节点0.10.25,赢7。

编辑我以前有一个谷歌ENOENT错误。 已经检查了我的path和Ruby在那里,我可以从命令行运行jekyll。 仍然没有喜乐。

我也有这个问题,并find使用产卵的答案。

问题在于Node如何在Windows上find可执行文件。 欲了解更多细节看这个答案:

https://stackoverflow.com/a/17537559

总之,改变spawn('jekyll', ['build']) spawn('jekyll.bat', ['build']) ,以便产卵。

所以我最终使用exec来代替。 这是我的大文件:

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

这里有一个关于差异的文章