Легкий генератор статических сайтов, написанный на 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.