Легкий генератор статических сайтов, написанный на Python.
Функции:
pip install --upgrade gnrt
Возможно, вам придется добавить $HOME/.local/bin
в $PATH
.
gnrt
gnrt
будет искать дополнительный файл config.yml
в текущем рабочем каталоге, дополнительные шаблоны Jinja2 в папке templates
, файлы уценки в папке content
, а затем записывать сгенерированные выходные файлы в public
папку, соблюдая при этом папку content
и вложенные файлы. структура папок.
Чтобы получить список опций, используйте:
gnrt -h
Конфигурация хранится в config.yml
. Допускается любая пара ключ-значение. Эти ключи и их значения можно использовать в файлах содержимого и шаблонов.
---
sitename: My awesome blog
baseurl: https://example.com
language: en
foo: bar
Если файл config.yml
существует, gnrt
будет искать defaults
и lists
записи.
Здесь вы определяете значения конфигурации по умолчанию, которые можно переопределить в файлах содержимого.
Пример:
defaults:
template: default.j2
markdown-extras:
- break-on-newline
- fenced-code-blocks
nav: includes/nav.html
bar: foo
Эти ключи имеют определенное значение, и их значения могут быть переопределены в файлах содержимого, как и любые другие default
.
markdown-extras
: позволяет включить расширения Markdown, список значений см. в разделе «Дополнительно».template
: устанавливает шаблон Jinja по умолчанию, который будет использоваться при рендеринге файлов содержимого.Здесь определяются списки контента, что позволяет, например, создавать списки ссылок.
Пример:
lists:
nav1:
filter:
key: category
value: page
template: nav-page.j2
nav2:
filter:
key: category
value: article
sort: published
reverse: true
template: nav-article.j2
rss:
filter:
key: category
value: article
sort: published
reverse: true
template: rss.j2
target: public/rss.xml
Списки могут выбирать контент с помощью filter
, который получает key
метаданных и соответствующее value
.
Их можно сортировать по значению метаданных (например, дате публикации, целому числу и т. д.), в прямом (по умолчанию) или reverse
порядке.
Во время рендеринга сгенерированный контент сохраняется в папке includes
(для кэширования), а путь к файлу можно настроить с помощью target
ключа. Это позволяет, например, создать RSS-канал.
Файлы содержимого имеют расширение .md
и хранятся в папке content
.
Файлы контента могут иметь заголовок, то есть структурированные метаданные, написанные в формате YAML.
Здесь можно переопределить значения по умолчанию.
Пример:
---
id: home
title: Home
link: /
nav-order: 3
---
id
: текущий идентификатор элемента, который можно использовать в любом файле содержимого для доступа к метаданным этого элемента.link
: URL сгенерированной страницы.target
: путь к сгенерированному файлуtitle
: заголовок текущего элемента body
контента написано в Markdown.
Он также может содержать синтаксис Jinja2 и заполнители, позволяющие вводить значения dataset
, например ссылки на другие страницы:
Check the [about]({{ data.about.link }}) page or read the [articles]({{ data.articles.link }})!
См. пример веб-сайта в docs/example
, который вы можете создать, установив gnrt
, клонировав этот репозиторий, перейдя в gnrt/docs/example
и выполнив gnrt
.
Затем вы можете просмотреть его по адресу http://localhost:8080/
перейдя в созданную public
папку и выполнив python3 -m http.server 8080
.
Вы также можете просмотреть действующий блог, созданный gnrt, и прочитать эту статью о gnrt.