Jekyll 将杰基尔与大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口

Jekyll 将杰基尔与大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口,jekyll,livereload,gulp,Jekyll,Livereload,Gulp,已经暗示了我如何用大口大口大口大口地经营杰基尔 它工作正常,除了我无法触发livereload(但它运行时没有错误) 我对节点的了解有限,所以我可能遗漏了一些东西 var gulp=require('gulp'); var refresh=require('gulp-livereload'); var lr=需要('tiny-lr'); var server=lr(); 吞咽任务('jw',函数(){ var spawn=require('child_process')。spawn, j=spa

已经暗示了我如何用大口大口大口大口地经营杰基尔

它工作正常,除了我无法触发livereload(但它运行时没有错误)

我对节点的了解有限,所以我可能遗漏了一些东西

var gulp=require('gulp');
var refresh=require('gulp-livereload');
var lr=需要('tiny-lr');
var server=lr();
吞咽任务('jw',函数(){
var spawn=require('child_process')。spawn,
j=spawn('jekyll',['-w','build']);
j、 stdout.on('data',函数(data){
log('stdout:'+data);//工作正常
刷新(服务器);//不触发
});
});

gulp livereload
需要通过
gulp.src()
或其他输入源导入文件。在这种情况下,我建议监视Jekyll编写的文件,并在此基础上重新加载

它看起来像这样:

var gulp=require('gulp');
var refresh=require('gulp-livereload');
var watch=需要(“大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口大口”;
var lr=需要('tiny-lr');
var server=lr();
吞咽任务('jw',函数(){
var spawn=require('child_process')。spawn,
j=spawn('jekyll',['-w','build']);
j、 stdout.on('data',函数(data){
log('stdout:'+data);//工作正常
});
监视({glob:'/glob/path/to/jekyll/output'},函数(文件){
//以批处理模式更新文件
返回文件.pipe(刷新(服务器));
});
});

只要Jekyll只重写更改过的文件,这将非常有效。但是,如果它覆盖了所有内容,那么livereload只会在每次更改时刷新浏览器。

您可以在构建结束时触发livereload,使其重新加载页面,这样您就不会多次刷新:

它可以工作,但Jekyll会替换所有文件,因此livereload会为每个文件触发。有没有办法只触发一次?我更新了答案,在批处理模式下使用
gulpwatch
。我在配置
手表时也犯了一个错误,对此我深表歉意。它需要指定为
{glob:}
@over热心的输入文件这对我不起作用,我在
watch
回调中添加了一个
console.log
,在站点更改时不会调用它。我的路径是
\u站点
。有什么想法吗?