如何在 Jekyll 中抑制空白行?
Posted
技术标签:
【中文标题】如何在 Jekyll 中抑制空白行?【英文标题】:How to suppress blank line in Jekyll? 【发布时间】:2013-07-19 05:23:19 【问题描述】:我将 GitHub Pages 用于我的博客,但遇到了 Jekyll 的问题。我的 post.html 有这样的块:
% for testpost in site.posts %
% four %
% lines of %
% processing %
% goes here %
% endfor %
中间的部分无关紧要。重要的部分是% %
标记之外的行尾,因此会呈现到html 中。由于这是一个循环,它会将大约 1000 个空白行放入 HTML 页面的中间。它不影响显示,但它使 View/Source 很麻烦。
关于如何避免那些多余的空行有什么想法吗?
【问题讨论】:
【参考方案1】:由于Liquid v4
(包含在v3.5
中的Jekyll
中)有一个Whitespace control
,最终解决了空行、空格等情况。
文档链接:https://shopify.github.io/liquid/basics/whitespace/
【讨论】:
【参考方案2】:我在https://github.com/plusjade/jekyll-bootstrap/blob/master/_includes/JB/setup 中发现了一个很好的解决方法,并且它与 github 页面兼容。
只需将您的循环包含在捕获语句中,然后将 nil 分配给生成的 var。
% capture cache %
% for p in site.posts %
do stuff here
% endfor %
% endcapture %% assign cache = nil %
【讨论】:
NB -- 这种方法仅适用于 liquid。如果这样做,则在捕获标记之间生成的任何 html 内容都会被完全忽略。 我不明白这是如何工作的。谁能解释一下?【参考方案3】:怎么样
page.content | escape | strip_newlines
【讨论】:
如何使用header.html
之类的包含来做到这一点?
想通了:% capture header %% include header.html %% endcapture % header | strip_newlines
【参考方案4】:
Jekyll plugin 去掉了空格。
Aucor 的 Jekyll 插件:例如插件。修剪不需要的 换行符/空格和按权重属性对页面进行排序。
您可以直接从它的Github repository 获取它。所以基本上你用% strip %% endstrip %
包装你的代码。即使这不适合您的需要,您也可以轻松更改 ruby 脚本。
例如:
% strip %
% for testpost in site.posts %
% four %
% lines of %
% processing %
% goes here %
% endfor %
% endstrip %
但是,请记住 Jekyll 插件的本质,您不能在 Github Pages 服务器上运行它们。
引用Jekyll Doccumentation:
GitHub Pages 由 Jekyll 提供支持,但是出于安全原因,所有 Pages 站点都是使用 --safe 选项禁用自定义插件生成的。不幸的是,这意味着如果您要部署到 GitHub Pages,您的插件将无法工作。
您仍然可以使用 GitHub Pages 发布您的网站,但您需要在本地转换网站并将生成的静态文件推送到您的 GitHub 存储库,而不是 Jekyll 源文件。
【讨论】:
【参考方案5】:其实这个问题有一个新的解决方案,不需要任何插件。
压缩 HTML 的 Jekyll 布局。一目了然:
删除不必要的空格; 删除可选的结束标签; 删除可选的开始标签; 移除 cmets; 在<pre>
中保留空格; GitHub 页面兼容; 忽略开发环境; 可配置的受影响元素; 配置文件模式; 自动测试。
http://jch.penibelst.de/
如果您 - 出于某种原因 - 不想使用它,这是一篇不错的文章,其中描述了一些解决方法: Compressing Liquid generated code - sylvain durand
【讨论】:
以上是关于如何在 Jekyll 中抑制空白行?的主要内容,如果未能解决你的问题,请参考以下文章