这个问题向我暗示了如何在Gulp中运行Jekyll。
除了我无法触发livereload(但它运行没有错误)之外,它都可以正常工作。
我对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
});
});
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只会在每次更改时刷新浏览器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句