如何抑制Jekyll中的空行?

如何抑制Jekyll中的空行?,jekyll,liquid,github-pages,liquid-layout,Jekyll,Liquid,Github Pages,Liquid Layout,我在我的博客中使用GitHub页面,我遇到了一个与Jekyll有关的问题。My post.html有如下块: {% for testpost in site.posts %} {% four %} {% lines of %} {% processing %} {% goes here %} {%

我在我的博客中使用GitHub页面,我遇到了一个与Jekyll有关的问题。My post.html有如下块:

{%    for testpost in site.posts   %}
{%           four                  %}
{%          lines of               %}
{%         processing              %}
{%         goes here               %}
{%    endfor                       %}
中间部分不重要。重要的部分是位于
{%%}
标记之外的行的结尾,因此会呈现到html中。由于这是一个循环,它将大约1000个空行放在HTML页面的中间。它不会影响显示,但会使视图/源变得麻烦

关于如何避免这些额外的空行,有什么想法吗?

有一种方法可以去除空白

Aucor提供的Jekyll插件:例如修剪不需要的 换行/空白和按权重属性排序页面

你可以直接从它的。所以基本上你用
{%strip%}{%endstrip%}
来包装你的代码。即使这不适合您的需要,您也可以轻松地更改ruby脚本

例如:

{% strip %}
    {%    for testpost in site.posts   %}
    {%           four                  %}
    {%          lines of               %}
    {%         processing              %}
    {%         goes here               %}
    {%    endfor                       %}
{% endstrip %}
但是,请记住Jekyll插件的本质,您不能在Github Pages服务器上运行它们

引自:

GitHub页面由Jekyll提供支持,但是所有页面站点都是使用--safe选项生成的,以出于安全原因禁用自定义插件。不幸的是,这意味着如果要部署到GitHub页面,插件将无法工作

您仍然可以使用GitHub页面发布站点,但需要在本地转换站点,并将生成的静态文件推送到GitHub存储库,而不是Jekyll源文件


我在中发现了一个很好的解决方法,它与github页面兼容

只需将您的循环括在一个capture语句中,并将nil分配给结果var

{% capture cache %}
    {% for p in site.posts %}
       do stuff here
    {% endfor %}
{% endcapture %}{% assign cache = nil %}
怎么样

{{ page.content | escape | strip_newlines }}

事实上,有一种新的解决方案可以解决这个问题,它不需要任何插件

压缩HTML的Jekyll布局。一目了然:

  • 删除不必要的空白
  • 删除可选的结束标记
  • 删除可选的开始标签
  • 删除评论
  • 保留
    中的空白
  • GitHub页面兼容
  • 忽视发展环境
  • 可配置的受影响元素
  • 剖面模式
  • 自动测试

如果出于某种原因,您不想使用本文,这是一篇很好的文章,介绍了一些解决方法:

自从
液体v4
(包含在
Jekyll
中,来自
v3.5
)以来,有一个
空白控制
,它最终解决了空行、空白等情况


链接到文档:

NB——此方法仅适用于液体。如果这样做,捕获标记之间生成的任何html内容都会被完全忽略。我不明白这是如何工作的。有人能解释一下吗?你怎么能用一个包含,比如
header.html
?弄明白了:
{%capture header%}{%include header.html%}{%endcapture%}{{{header | strip_newlines}