Jekyll по своей сути это движок трансформации текста. Его концепция состоит в следующем: вы передаете текст написанный в выбранном вами формате Markdown (Markdown, Textile и т.д.) или в чистом HTML, а Jekyll форматирует его в соответствии с файлами шаблонов. В ходе этого процесса вы можете настроить как будут выглядеть URL вашего сайта, какие данные будут отражаться в макете и многое другое. Все это делается путем редакции текстовых файлов , финальным продуктом является статический сайт.

Базовый сайт на Jekyll выглядит примерно так:

.
├── _config.yml
├── _data
|   └── members.yml
├── _drafts
|   ├── begin-with-the-crazy-ideas.md
|   └── on-simplicity-in-technology.md
├── _includes
|   ├── footer.html
|   └── header.html
├── _layouts
|   ├── default.html
|   └── post.html
├── _posts
|   ├── 2007-10-29-why-every-programmer-should-play-nethack.md
|   └── 2009-04-26-barcamp-boston-4-roundup.md
├── _sass
|   ├── _base.scss
|   └── _layout.scss
├── _site
├── .jekyll-metadata
└── index.html # can also be an 'index.md' with valid YAML Frontmatter
Структура каталогов сайтов на Jekyll с использованием тем, поставляемых в гемах

Начиная с Jekyll 3.2, новые проекты, создаваемые с помощью команды jekyll new используют для задания внешнего вида сайта темы, поставляемые в гемах . Это ведет к облегченной структуре каталогов по умолчанию: каталоги _layouts, _includes и_sass хранятся в геме темы. Текущая тема по умолчанию minima, команда bundle show minima покажет, в каком каталоге на вашем компьютере хранятся файлы этой темы.

А вот обзор основных файлов и каталогов:

Файл/каталог Описание
_config.yml Хранит конфигурационные данные. Многие из этих опций могут быть заданы в командной строке, но удобнее сразу определить их в файле и не запоминать.
_drafts Черновики это неопубликованные посты. Формат этих файлов не включает дату: title.MARKUP. Они описаны в документации.
_includes Это фрагменты, которые могут использоваться многократно в ваших постах и шаблонах. Например, тег liquid {% include file.ext %} подключает фрагмент _includes/file.ext.
_layouts Это макеты, используемые для оформления постов. Макеты выбираются в постах на основе вводных YAML, которые мы обсудим позднее. Тег liquid {{ content }} используется для вывода контента на страницу
_posts Ваш динамический контент. Важно правильное именование этих файлов в следующем формате: YEAR-MONTH-DAY-title.MARKUP. Постоянные ссылки для каждого файла можно настроить, но дата и язык разметки должны быть определены в имени файла.
_data В этом каталоге располагаются правильно отформатированные данные сайта. Движок Jekyll автоматически загружает все файлы yaml (с расширениями .yml или .yaml) из этого каталога и делает их доступными по всему сайту. Например, файл members.yml из этого каталога будет доступен через site.data.members.
_site В этом каталоге хранится собранный сайт на Jekyll. Этот каталог стоит добавить в ваш файл .gitignore.
.jekyll-metadata Технический файл, помогающий Jekyll отслеживать, какие файлы не были изменены с момента последней сборки, а какие нуждаются в регенерации. Он не включается в собранный сайт, лучше всего сразу включить его в .gitignore.
index.html и прочие файлы HTML, MD и textile При условии наличия в таком файле вводной YAML, он будет обработан Jekyll. Это также относится ко всем файлам .html, .markdown, .md или .textile в вашем корневом каталоге или в другом каталоге, не указанном здесь.
Остальные файлы/каталоги К этой категории относятся все остальные каталоги и файлы, не перечисленные выше, такие как каталоги css и images, файлы favicon.ico и т.д. Все они будут скопированы в собранный сайт. Примеры сайтов на Jekyll собраны здесь.