Как подавить пустую строку в Jekyll?

Я использую страницы GitHub для своего блога, и у меня проблема с Jekyll. У моего post.html есть такой блок:

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

Часть в середине не имеет значения. Важной частью является конец строки, которая находится за пределами разметки {% %} %% {% %}, и поэтому отображается в html. Поскольку это находится в цикле, он помещает около 1000 пустых строк в середину HTML-страницы. Это не влияет на отображение, но это делает проблему View/Source проблемой.

Любые идеи о том, как избежать лишних пустых строк?

Ответ 1

Поскольку Liquid v4 (включен в Jekyll от v3.5), есть элемент Whitespace control v3.5, который, наконец, разрешил регистр с пустой линией, пробелом и т.д.

Ссылка на документацию: 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 %}

Ответ 3

Как насчет

{{ page.content | escape | strip_newlines }}

Ответ 4

Существует Jekyll плагин, который разделяет пробелы.

Плагины Jekyll от Aucor: плагины, например. обрезка нежелательных символов новой строки/пробелов и сортировка по весу атрибута.

Вы можете получить его непосредственно из своего репозитория Github. Поэтому в основном вы завершаете свой код с помощью {% strip %}{% endstrip %}. Даже если это вам не подходит, вы можете легко изменить рубиновый скрипт.

Например:

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

Однако, пожалуйста, помните о природе плагинов Jekyll, вы не можете запускать их на сервере Github Pages.

Цитата от Jekyll Doccumentation:

GitHub Pages работает на Jekyll, однако все сайты страниц генерируются с использованием опции --safe для отключения настраиваемых плагинов по соображениям безопасности. К сожалению, это означает, что ваши плагины не будут работать, если вы собираетесь на GitHub Pages.

Вы все же можете использовать страницы GitHub для публикации своего сайта, но вам нужно будет локально преобразовать сайт и вытолкнуть сгенерированные статические файлы в репозиторий GitHub вместо исходных файлов Jekyll.

Ответ 5

На самом деле есть новое решение для этой проблемы, которое работает без какого-либо плагина.

Макет Jekyll, который сжимает HTML. С одного взгляда:

  • удаляет ненужные пробелы;
  • удаляет дополнительные концевые теги;
  • удаляет необязательные стартовые теги;
  • удаляет комментарии;
  • сохраняет пробелы внутри <pre>;
  • GitHub Pages совместим;
  • игнорирует среды разработки;
  • настраиваемые затронутые элементы;
  • режим профиля;
  • автоматически проверяется.

http://jch.penibelst.de/

Если вы - по какой-то причине - не хотите использовать это, вот хорошая статья, в которой описываются некоторые обходные пути: Сжатие Жидкости сгенерированного кода - sylvain durand