这个问题向我暗示了如何用Gulp来运行Jekyll。
它可以正常工作,除非我无法触发肝量(但它运行时没有错误)。
我对Node的了解有限,所以我可能遗漏了什么.
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
});
});发布于 2014-02-19 14:37:45
gulp-livereload需要通过gulp.src()或其他乙烯基输入源连接到它的文件。在本例中,我建议gulp-watch监视Jekyll所写的文件,并在此基础上重新加载。
看起来会是这样的:
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));
});
});只要Jekyll只重写更改过的文件,它就会完美地工作。但是,如果它覆盖了所有内容,那么livereload只会在每次更改时刷新浏览器。
发布于 2016-07-29 13:29:07
您可以在构建结束时触发livereload,使其重新加载页面,从而避免多次刷新:
https://stackoverflow.com/questions/21883245
复制相似问题