2014-02-19 2 views
2

This question 지킬로 지프를 실행하는 방법에 대한 암시가 있습니다.지킬과 라이브로드를 사용하는 지킬 사용

livereload를 트리거 할 수 없다는 점을 제외하면 정상적으로 작동하지만 오류없이 실행됩니다.

노드의 내 지식은 제한되어 있습니다, 그래서 아마

var gulp = require('gulp'); 
var refresh = require('gulp-livereload'); 
var lr = require('tiny-lr'); 
var server = lr(); 

gulp.task('jw', function(){ 
    var spawn = require('child_process').spawn, 
     j  = spawn('jekyll', ['-w', 'build']); 

    j.stdout.on('data', function (data) { 
     console.log('stdout: ' + data); // works fine 
     refresh(server); // doesn’t trigger 
    }); 
}); 

답변

6

gulp-livereload 파일이 gulp.src() 또는 다른 vinyl 입력 소스를 통해 그것으로 파이프가 필요합니다 ... 뭔가가 있어요. 이 경우 지킬 (Jekyll)이 작성하는 파일을보고 해당 내용을 기반으로 다시로드하는 것이 좋습니다 (adding gulp-watch).

그것은 다음과 같이 보일 것입니다 :만큼 지킬이 변경된 파일 만 다시 작성으로

var gulp = require('gulp'); 
var refresh = require('gulp-livereload'); 
var watch = require('gulp-watch'); 
var lr = require('tiny-lr'); 
var server = lr(); 

gulp.task('jw', function(){ 
    var spawn = require('child_process').spawn, 
     j  = spawn('jekyll', ['-w', 'build']); 

    j.stdout.on('data', function (data) { 
     console.log('stdout: ' + data); // works fine 
    }); 

    watch({glob: '/glob/path/to/jekyll/output'}, function(files) { 
     // update files in batch mode 
     return files.pipe(refresh(server)); 
    }); 
}); 

, 이것은 완벽하게 을 작동합니다. 그러나 모든 항목을 덮어 쓰는 경우 livereload는 모든 변경 사항에서 브라우저를 새로 고치는 것 이상을 수행하지 않습니다. 여러 새로 고침이되지 않도록

+0

모든 파일을 대체를, 그래서 livereload는 각각 트리거됩니다. 한 번만 작동시키는 방법이 있습니까? – lemp

+0

예, 답변을 업데이트하겠습니다. – OverZealous

+0

배치 모드에서'gulp-watch'를 사용하는 대답을 업데이트했습니다. 나는 또한'watch'를 구성하는 방식에 실수를했는데, 나는 그것에 대해 사과한다. '{glob : <>} '으로 지정된 입력 파일이 필요했습니다. – OverZealous

0

당신은이 페이지를 다시로드하고, 빌드의 끝에서 livereload을 트리거 할 수 있습니다 : 그것은 지킬 뿐이다 작동

관련 문제