Как подавить пустую строку в Jekyll?
Я использую GitHub Pages для своего блога и столкнулся с проблемой с Jekyll. Мой post.html имеет такой блок:
{% for testpost in site.posts %}
{% four %}
{% lines of %}
{% processing %}
{% goes here %}
{% endfor %}
Часть в середине не имеет значения. Важной частью является конец линии, который находится за пределами {% %}
разметка, и, следовательно, отображается в HTML. Поскольку это цикл, он помещает около 1000 пустых строк в середину страницы HTML. Это не влияет на отображение, но делает просмотр / источник затруднительным.
Любые идеи о том, как избежать этих лишних пустых строк?
5 ответов
Поскольку Liquid v4
(включен в Jekyll
от v3.5
) E сть Whitespace control
, который окончательно разрешил случай с пустой строкой, пробелом и т. д.
Ссылка на документацию: https://shopify.github.io/liquid/basics/whitespace/
Есть хороший обходной путь, который я обнаружил в https://github.com/plusjade/jekyll-bootstrap/blob/master/_includes/JB/setup и который совместим со страницами github.
Просто заключите ваш цикл в оператор захвата и присвойте nil полученной переменной.
{% capture cache %}
{% for p in site.posts %}
do stuff here
{% endfor %}
{% endcapture %}{% assign cache = nil %}
Есть плагин Jekyll, который удаляет пробелы.
Плагины Jekyll от Aucor: Плагины, например. обрезка нежелательных новых строк / пробелов и сортировка страниц по весу атрибута.
Вы можете получить его прямо из репозитория Github. Таким образом, в основном вы оберните свой код {% strip %}{% endstrip %}
, Даже если это вам не подходит, вы можете легко изменить скрипт ruby.
Например:
{% strip %}
{% for testpost in site.posts %}
{% four %}
{% lines of %}
{% processing %}
{% goes here %}
{% endfor %}
{% endstrip %}
Однако, пожалуйста, помните природу плагинов Jekyll, вы не можете запускать их на сервере Github Pages.
Цитата из документации Джекилла:
GitHub Pages работает на Jekyll, однако все сайты Pages создаются с использованием опции --safe для отключения пользовательских плагинов по соображениям безопасности. К сожалению, это означает, что ваши плагины не будут работать, если вы развертываете на GitHub Pages.
Вы все еще можете использовать GitHub Pages для публикации своего сайта, но вам нужно будет конвертировать сайт локально и помещать сгенерированные статические файлы в ваш репозиторий GitHub вместо исходных файлов Jekyll.
На самом деле есть новое решение этой проблемы, которое работает без какого-либо плагина.
Макет Jekyll, сжимающий HTML. С одного взгляда:
- удаляет ненужные пробелы;
- удаляет необязательные конечные теги;
- удаляет необязательные начальные теги;
- удаляет комментарии;
- сохраняет пробелы внутри
<pre>
;- GitHub Страницы совместимы;
- игнорирует среды разработки;
- настраиваемые затронутые элементы;
- режим профиля;
- автоматически проверяется.
Если вы - по какой-то причине - не хотите использовать это, вот хорошая статья, в которой описаны некоторые обходные пути: Сжатие сгенерированного кода на жидком языке - sylvain durand