如何在Jekyll中去除空白行?

25

我在我的博客中使用GitHub Pages,并且在Jekyll方面遇到了问题。我的post.html文件中有这样一个块:

{%    for testpost in site.posts   %}
{%           four                  %}
{%          lines of               %}
{%         processing              %}
{%         goes here               %}
{%    endfor                       %}

中间部分不重要。重要的是行尾在{% %}标记之外,因此会被渲染成HTML。由于这是在循环中,它会在我的HTML页面中放置大约1000个空白行。这不会影响显示,但它使得查看源代码比较困难。

有什么办法可以避免这些额外的空白行吗?

5个回答

15

13

2
注意--这种方法仅适用于liquid。如果您这样做,任何在捕获标签之间生成的html内容都将被完全省略。 - Joe Friedrichsen
我不明白这是如何工作的。有人可以解释一下吗? - Charles Prakash Dasari

8
如何?
{{ page.content | escape | strip_newlines }}

你如何使用 header.html 这样的 include 来实现这个功能? - Nathan Arthur
7
搞定了:{% capture header %}{% include header.html %}{% endcapture %}{{ header | strip_newlines }} - Nathan Arthur

4

有一个Jekyll插件,可以去除空格。

Aucor的Jekyll插件:用于修剪不需要的换行符/空格和按权重属性对页面进行排序的插件。

您可以直接从Github存储库获取它。所以基本上您可以使用{% strip %}{% endstrip %}将您的代码包装起来。即使这不能满足您的需求,您也可以轻松更改ruby脚本。

例如:

{% strip %}
    {%    for testpost in site.posts   %}
    {%           four                  %}
    {%          lines of               %}
    {%         processing              %}
    {%         goes here               %}
    {%    endfor                       %}
{% endstrip %}

然而,请记住Jekyll插件的本质,您无法在Github Pages服务器上运行它们。
引用自Jekyll文档
GitHub Pages由Jekyll驱动,但所有Pages站点都使用--safe选项生成,以禁用自定义插件以确保安全。不幸的是,这意味着如果您部署到GitHub Pages,则您的插件将无法工作。
您仍然可以使用GitHub Pages发布您的站点,但您需要在本地转换站点并将生成的静态文件推送到GitHub存储库,而不是Jekyll源文件。

1
实际上,有一种新的解决方案可以解决这个问题,而且不需要任何插件。
一个 Jekyll 布局可以压缩 HTML。简要地说:
- 删除不必要的空格; - 删除可选的结束标记; - 删除可选的开始标记; - 删除注释; - 保留 <pre> 中的空格; - 兼容 GitHub Pages; - 忽略开发环境; - 可配置受影响的元素; - 配置文件模式; - 自动测试。

http://jch.penibelst.de/

如果出于某种原因您不想使用它,这里有一篇好的文章,描述了一些解决方法: 压缩Liquid生成的代码 - Sylvain Durand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接