2014-02-18 2 views
12

Gulp.js를 사용하여 지킬 사이트를 만들려고합니다. 나는 this question에 플러그인을 사용해서는 안된다는 것을 읽었습니다.Gulp/Node에서 하위 프로세스로 jekyll 실행

I했습니다 제안 자식 프로세스를 사용하여 조사하고 있지만이 오류가 계속 :

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

은? Node 0.10.25, Win 7에 있습니다.

EDIT 이전에 ENOENT 오류가 발생했습니다. 내 경로를 확인하고 루비가 있고 명령 줄에서 jekyll을 실행할 수 있습니다. 아직도 기쁨이 없습니다.

답변

14

: 여기 내 꿀꺽 파일입니다.

문제는 Node가 Windows에서 실행 파일을 찾는 방법과 관련이 있습니다. 자세한 내용은이 답변을보고 : 짧은에서

https://stackoverflow.com/a/17537559

은, 산란이 작동되도록하기 위해서 spawn('jekyll.bat', ['build'])spawn('jekyll', ['build'])을 변경합니다.

+0

SpikeMeister, 방금 내 문제를 인터넷 검색으로 답을 보았습니다. 죄송합니다. 일찍이 투표를 수락하지 않았습니다. .bat 수정이 Mac/Unix 컴퓨터에서 작동하는지 알고 있습니까? 내 하루를 만들어 줘! – matthewbeta

+2

내 이전의 코멘트. OS에 기반하여 명령을 설정할 수 있습니다 : 'var jekyll = process.platform === "win32"? "jekyll.bat": "jekyll"; ' 다음을 실행하십시오 : 'spawn (jekyll.bat) : "jekyll" – matthewbeta

8

그래서 결국 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); 
}); 
}); 

Here's a post about the differences