ekyll
В посте про перезапуск я пообещал написать серию статей про Jekyll. Это — первая, вводная, заметка из серии.
Я не буду подробно описывать что же такое Jekyll, как его установить, какая у него файловая структура и так далее — про это уже написано довольно много статей (см. ниже в «ссылках»). Если кратко, то это статический генератор сайтов с прицелом на блоги.
itHub Pages
Начну с главного: эту и последующие статьи я буду писать в контексте сервиса GitHub Pages. Дело в том, что Гитхаб, помимо обычного хостинга статики, предоставляет также и возможность хостить сайты на Jekyll. Таким образом, Jekyll — единственный способ что-то генерить прямо на Гитхабе (ещё можно попробовать исхитриться и либо использовать сторонний сервис, в который будут уходить хуки и который будет что-то на каждый пуш билдить и коммитить, либо обрабатывать и собирать всё на клиенте, сделав весь сайт одностраничным веб-приложением; но оба этих решения я рассматривать пока не буду).
С Jekyll же достаточно создать файл в формате markdown, добавить в начало YAML-заголовок — и можно писать текст. После пуша этого файла в репозиторий Гитхаб перегенерирует весь сайт, и соответствующий пост появится как в виде страницы на сайте, так и во всех списках и сайдбарах на других страницах. При этом пушить файл или изменения можно откуда угодно — хоть со своей машины, хоть через веб-интерфейс Гитхаба, хоть с помощью любого стороннего приложения, использующего API.
Сразу замечу, что многие вещи, о которых я буду писать в последующих статьях, можно намного проще реализовать в виде плагинов. Но я не пойду «простым» (для разработчика, но не для пользователя) путём — мне интересны решения, которые будут работать где угодно, в том числе и на Гитхабе, где нельзя использовать сторонние плагины.
«Hello world»
Минимальный документ, который нужно написать, чтобы файл сбилдился с помощью Jekyll, должен содержать YAML-заголовок с хотя бы одним полем — layout
(на самом деле можно и без него, но тогда у вас будет страница без заголовков и всего прочего — вряд ли вам это нужно). Так что минимально адекватный hello-world.md
для Jekyll мог бы выглядеть так:
---
layout: default
---
Hello world!
В реальном мире к посту захочется добавить и заголовок записи, и ещё всяких данных, но для простых случаев хватит и такого минимального YAML-заголовка.
ата
Одна из фишек, которая мне понравилась в Jekyll — файлы постов в блоге нужно называть в формате YYYY-MM-DD-title
. Во-первых, это заставляет поддерживать в порядке файловую структуру — посты в папках автоматически сортируются по дате, во-вторых, это избавляет от необходимости прописывать дату в самом файле. В некоторых генераторах статики, которые я использовал раньше, эту информацию приходилось дублировать, прописывая в YAML поля типа published
. В Jekyll тоже можно их использовать, если, скажем, хочется уточнить время, но можно жить и без этого — дата из имени файла попадёт в данные, доступные шаблонам.
В Jekyll остальные аспекты сделаны так же минималистично. Для создания нового поста не нужно помнить, что же там обязательно прописывать в YAML, можно просто создать текстовый документ, заполнить его и получить готовый пост на сайте после пуша.
rose.io
Если не хочется вручную каждый раз заполнять YAML-заголовки, то можно воспользоваться или каким-нибудь скриптом, как это сделано в Jekyll Bootstrap, или использовать сервис Prose.io — он позволяет описать в конфиге, какие данные использовать по умолчанию при создании нового файла. Таким образом, если новые посты писать через веб, используя Prose, то не нужно будет заботиться о заполнении метаданных (на самом деле на них нужно будет всё равно разок взглянуть, но об этом я напишу в другой раз).
сылки
В сети про Jekyll уже есть очень много полезной информации. В этом разделе я попробую постепенно собирать и то, что может понадобиться для начала работы с Jekyll, и то, что нужно использовать постоянно. Итак:
У проекта Jekyll Bootstrap есть отличная серия статей про Jekyll, например:
Вся логика в Jekyll работает на шаблонизаторе Liquid. Недавно Гитхаб обновил версию Jekyll (вместе с Liquid, естественно), так что сейчас можно использовать все теги из документации:
До этого обновления, скажем, нельзя было использовать split
— а в отсутствие нормального поиска и замены с регулярными выражениями это почти единственный способ сделать что-то сложное. Я уже почти разобрался как с ним работать, так что ждите статей про это.
Для написания постов я советую использовать Маркдаун. Хотя Jekyll позволяет создавать новые посты как на чистом HTML, так и используя другой формат — Textile, для большинства задач Маркдаун будет лучше.
- В качестве движка для маркдауна я советую использовать kramdown — сейчас это оптимальный вариант. Возможно, я как-нибудь напишу небольшую заметку, в которой расскажу, почему остальные движки маркдауна, доступные Jekyll, хуже крамдауна.
- Для конфигурации как сайта целиком, так и отдельных постов используется формат YAML — имеет смысл изучить его синтаксис.
Вообще, я очень доволен, что для своего сайта выбрал Jekyll — хотя для тонкой настройки приходится очень сильно ломать голову над Liquid, в конечном счёте это того стоит.
Вы можете прокомментировать эту статью в Мастодоне.
Опубликовано с метками: #Blog #Meta #Jekyll