使用Live Reload和Jekyll

And*_*rew 56 ruby jekyll

我开始使用Jekyll静态站点生成器,我想使用Live Reload.我知道Jekyll有一个生成器和服务器命令,Live Reload可以运行各种编译器和自定义命令.如何配置这些协同工作?

小智 24

对于jekyll 1.0+使用:

jekyll serve --watch
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息和选项,请参阅Jekyll:基本用法.

  • 这是不正确的.Jekyll将重新编译所有内容,但不幸的是,它无法处理实际浏览器的任何实时重新加载/刷新. (48认同)
  • 为什么这个答案得到了如此多的投票?问题是询问LiveReload不能通过`--watch`标志自动重新生成. (12认同)
  • 这不会通知LiveReload,是吗? (7认同)
  • 与Jekyll的最新改进相比,这个问题相对较旧.感谢您跟进更新版本的答案. (2认同)
  • 我低估了这个答案; 它*不回答原始问题. (2认同)

Jan*_*gre 24

护livereload您可以与使用护哲基尔和集中收看过程中与后卫,一个例子是(我没有测试):

  • 通过gem或bundler安装guard-jekyll
  • 通过gem或bundler安装guard-livereload

Init guard-jekyll

guard init jekyll
Run Code Online (Sandbox Code Playgroud)

将其添加到Guardfile:

guard 'livereload' do
  watch(%r{_site/.+})
end
Run Code Online (Sandbox Code Playgroud)

您可以调整上述内容以更好地适应您的项目,您可能已经知道必须在页面上包含livereload脚本:

<script src="http://localhost:35729/livereload.js"></script>
Run Code Online (Sandbox Code Playgroud)

哦,并开始整个观看的混乱:

guard
Run Code Online (Sandbox Code Playgroud)


abo*_*021 20

我发现最简单的方法是使用两个终端窗口:一个用于jekyll serve --watch,一个用于guard.

我尝试了Nobu提出guard-jekyll-plus方法,但我遇到了一堆错误.

正如shumushin指出的那样,Jekyll可以处理自动重建过程,您只需使用它即可启动它jekyll serve --watch

现在让LiveReload在第二个终端窗口中使用guard-livereload运行防守.这与Jan Segre的答案基本相同,但没有guard-jekyll.

Guardfile看起来像这样:

guard 'livereload' do
  watch(/^_site/)
end
Run Code Online (Sandbox Code Playgroud)

我的Gemfile:

gem 'jekyll'
gem 'guard'
gem 'guard-livereload'
Run Code Online (Sandbox Code Playgroud)

注意:您仍需要在index.html页面中包含livereload脚本; 它是绑定guard-livereload和浏览器在一起的"胶水" .

<script src="http://localhost:35729/livereload.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • `--livereload` 参数是在 Jekyll 3.70 中引入的。从现在开始你只需要输入:`jekyll s -l`。 (3认同)

Blu*_*luu 20

LiveReload内置于Jekyll 3.7+.

jekyll serve --livereload
Run Code Online (Sandbox Code Playgroud)

您还可以设置LiveReload的端口,延迟和忽略的文件.见jekyll help serve.


bal*_*and 15

更新:这不再适用于最新版本的Jekyll

cd your/site/folder
jekyll --server --auto
Run Code Online (Sandbox Code Playgroud)

  • 比照 @ shumushin对最新版Jekyll的回答. (4认同)

Nob*_*obu 13

这篇文章解释了一种更清洁的方式 - 使用Jekyll设置LiveReload

的Gemfile:

gem 'jekyll'
gem 'guard'
gem 'guard-jekyll-plus'
gem 'guard-livereload'
Run Code Online (Sandbox Code Playgroud)

Guardfile:

guard 'jekyll-plus', :serve => true do
  watch /.*/
  ignore /^_site/
end

guard 'livereload' do
  watch /.*/
end
Run Code Online (Sandbox Code Playgroud)

安装任何LiveReload浏览器扩展.然后跑guard.


Ale*_*lex 11

我写了一个名为Hawkins的Jekyll插件,它将LiveReload整合到了Jekyll watch进程中.它适用于Jekyll 3.1及更高版本.

只需添加

group :jekyll_plugins do
  gem 'hawkins'
end
Run Code Online (Sandbox Code Playgroud)

到您的Gemfile(然后是a bundle install).从那里你可以跑jekyll liveserve.Hawkins将修改head页面的各个部分以包含LiveReload的必要组件,当Jekyll检测到页面更改时,Hawkins将通过WebSockets将消息推送到您的浏览器.请注意,您需要一个支持WebSockets的浏览器.对于非常快速的重新加载,您可以使用Jekyll的新--incremental选项,该选项仅重新生成已更改的页面.

  • 太棒了,没有这个后卫的东西等,确实只是有效.可能想添加"捆绑初始化",但人们可以想出来:-) (2认同)

小智 5

此命令将在浏览器中打开您的网站并使用 jekyll 内置的 livereload 服务器。

bundle exec jekyll serve -l -o

您需要最新的 jekyll 版本。