【发布时间】:2012-01-13 19:06:30
【问题描述】:
我开始使用Jekyll static site generator,我想使用Live Reload。我知道 Jekyll 有生成器和服务器命令,Live Reload 可以运行各种编译器和自定义命令。如何配置这些以协同工作?
【问题讨论】:
我开始使用Jekyll static site generator,我想使用Live Reload。我知道 Jekyll 有生成器和服务器命令,Live Reload 可以运行各种编译器和自定义命令。如何配置这些以协同工作?
【问题讨论】:
LiveReload 内置在 Jekyll 3.7+ 中。
jekyll serve --livereload
您还可以设置 LiveReload 的端口、延迟和忽略文件。见jekyll help serve。
【讨论】:
更新:正如其他答案中所指出的,LiveReload 内置于 Jekyll 3.7+ 中。
jekyll serve --livereload
我发现最简单的方法是使用两个终端窗口:一个用于jekyll serve --watch,一个用于guard。
我尝试了guard-jekyll-plus approach suggested by Nobu,但出现了一堆错误。
作为shumushin pointed out,Jekyll 可以处理自动重建过程,您只需使用jekyll serve --watch 启动它
现在在第二个终端窗口中使用 guard-livereload 让 LiveReload 正常运行。这个和Jan Segre's answer基本一样,只是没有guard-jekyll。
我的Guardfile 看起来像这样:
guard 'livereload' do
watch(/^_site/)
end
还有我的Gemfile:
gem 'jekyll'
gem 'guard'
gem 'guard-livereload'
注意:您仍然需要在index.html 页面中包含 livereload 脚本;它是将guard-livereload 和浏览器绑定在一起的“胶水”。
<script src="http://localhost:35729/livereload.js"></script>
【讨论】:
jekyll serve -w 替换为jekyll build -w。虽然它现在给出了重复的观察通知,可能是因为 Pow 也在观察变化?
403 Forbidden。任何想法?使用bundle exec guard
--livereload 参数是在 Jekyll 3.70 上引入的。从现在开始,您只需输入:jekyll s -l.
有guard-livereload 可以与guard-jekyll 一起使用,并使用guard 集中观看过程,例如(我还没有测试过):
初始化guard-jekyll
guard init jekyll
将此添加到您的 Guardfile:
guard 'livereload' do
watch(%r{_site/.+})
end
您可以调整以上内容以更好地适应您的项目,并且 你可能已经知道你必须包含 livereload 页面上的脚本:
<script src="http://localhost:35729/livereload.js"></script>
哦,开始整个观看混乱:
guard
【讨论】:
livereload watch(%r{_site/.+)}) 有一个额外的括号,应该是 watch(%r{_site/.+})。
<script src="http://localhost:35729/livereload.js"></script> 不太好,因为这些部分可能不需要提交给 git。
{{#dev}}<script ...></script>{{/dev}}
【讨论】:
--watch 标志自动重新生成。
更新:这不再适用于最新版本的 Jekyll
cd your/site/folder
jekyll --server --auto
【讨论】:
这篇文章解释了一种更简洁的方式 - Setting Up LiveReload With Jekyll
宝石文件:
gem 'jekyll'
gem 'guard'
gem 'guard-jekyll-plus'
gem 'guard-livereload'
保护文件:
guard 'jekyll-plus', :serve => true do
watch /.*/
ignore /^_site/
end
guard 'livereload' do
watch /.*/
end
安装any LiveReload browser extension。然后运行guard。
【讨论】:
我编写了一个名为 Hawkins 的 Jekyll 插件,它将 LiveReload 合并到 Jekyll watch 进程中。它适用于 Jekyll 3.1 及更高版本。
只需添加
group :jekyll_plugins do
gem 'hawkins'
end
到您的 Gemfile(然后是 bundle install)。从那里你可以运行jekyll liveserve。 Hawkins 将修改您页面的head 部分以包含 LiveReload 所需的组件,并且当 Jekyll 检测到页面更改时,Hawkins 将通过 WebSockets 将消息推送到您的浏览器。请注意,您需要支持WebSockets 的浏览器。对于非常快速的重新加载,您可以使用 Jekyll 的新 --incremental 选项,它只会重新生成更改的页面。
【讨论】:
首先在您的站点文件夹中正常运行 jekyll:
cd your/site/folder
jekyll
默认情况下,Jekyll 会在其中生成一个名为 _site 的文件夹 (your/site/folder/_site)。
告诉 LiveReload 观看 _site 文件夹。
【讨论】:
jekyll 命令会监视文件更改并自动重新生成它们吗?
此命令将在浏览器中打开您的网站并使用 jekyll 内置的 livereload 服务器。
bundle exec jekyll serve -l -o
您需要最新的 jekyll 版本。
【讨论】:
我今天刚开始使用 GitHub Pages,希望能够通过 Jekyll 使用实时重新加载。得到它的工作并在Creating GitHub Pages with Jekyll & LiveReload上写了我的第一篇文章。
它使用带有 grunt-contrib-watch 插件的 Grunt,而不是 Jekyll 的 serve 命令 - 对我来说效果很好。希望它也适用于您。
【讨论】:
你可以只使用jekyll serve -w,我比较喜欢这个选项,因为我很懒。
【讨论】:
对于实时重新加载, 从项目根目录中的 Gemfile 中删除 Jekyll Admin,它的作用就像魅力一样。
【讨论】:
如果您经常运行它,Repla macOS 应用程序可以轻松启动 Jekyll,从而自动刷新。安装 Repla 后,您可以从 Jekyll 博客的根目录运行它,并将 jekyll serve 命令传递给它。例如:
repla server "bundle exec jekyll serve --watch --drafts" -r "...done"
Repla 将被配置为每次在控制台中打印 ...done 时刷新,Jekyll 在完成编译您的站点时打印。
Repla 在显示您网站的浏览器拆分下方的拆分中运行 Jekyll 服务器进程:
Jekyll 在 Repla 中运行后,还可以使用⌘S 将配置保存到文件中,关闭窗口关闭,双击文件再次运行。换句话说,你下次只需打开文件就可以重新开始你的 Jekyll 博客,完全不需要终端。
披露:我维护 Repla 应用程序。
【讨论】: