Um gerador de site estático leve escrito em Python.
Características:
pip install --upgrade gnrt
Pode ser necessário adicionar $HOME/.local/bin ao seu $PATH .
gnrt
gnrt procurará um arquivo config.yml opcional no diretório de trabalho atual, modelos Jinja2 opcionais na pasta templates , arquivos markdown na pasta content e, em seguida, gravará os arquivos de saída gerados na pasta public , respeitando a pasta content e sub- estrutura de pastas.
Para obter uma lista de opções, use:
gnrt -h
A configuração é armazenada em config.yml . Qualquer par de valores-chave é permitido. Essas chaves e seus valores podem ser usados nos arquivos de conteúdo e de modelo.
---
sitename: My awesome blog
baseurl: https://example.com
language: en
foo: bar
Se o arquivo config.yml existir, gnrt procurará os defaults e lists as entradas.
É aqui que você define os valores de configuração padrão, que podem ser substituídos nos arquivos de conteúdo.
Exemplo:
defaults:
template: default.j2
markdown-extras:
- break-on-newline
- fenced-code-blocks
nav: includes/nav.html
bar: foo
Essas chaves têm um significado específico e seus valores podem ser substituídos em arquivos de conteúdo, como qualquer outro default .
markdown-extras : permite habilitar extensões Markdown, veja Extras para uma lista de valorestemplate : define o modelo Jinja padrão a ser usado ao renderizar arquivos de conteúdoÉ aqui que são definidas listas de conteúdo, permitindo a geração de listas de links, por exemplo.
Exemplo:
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
As listas podem selecionar conteúdo por meio de um filter , que obtém uma key de metadados e um value correspondente.
Eles podem ser classificados por valor de metadados (por exemplo, uma data de publicação, um número inteiro, ...), em ordem direta (padrão) ou reverse .
Durante a renderização, o conteúdo gerado é salvo na pasta includes (para armazenamento em cache), enquanto o caminho do arquivo pode ser personalizado através da chave target . Isto permite gerar um feed RSS, por exemplo.
Os arquivos de conteúdo têm a extensão .md e são armazenados na pasta content .
Os arquivos de conteúdo podem ter um frontmatter – ou seja, metadados estruturados – escrito em YAML.
É aqui que os valores padrão podem ser substituídos.
Exemplo:
---
id: home
title: Home
link: /
nav-order: 3
---
id : o identificador do item atual, que pode ser usado em qualquer arquivo de conteúdo para acessar os metadados deste itemlink : URL da página geradatarget : caminho do arquivo geradotitle : título do item atual body do conteúdo é escrito em Markdown.
Também pode conter sintaxe Jinja2 e espaços reservados, permitindo a injeção de valores dataset , como links para outras páginas:
Check the [about]({{ data.about.link }}) page or read the [articles]({{ data.articles.link }})!
Veja o site de exemplo em docs/example , que você pode gerar instalando gnrt , clonando este repositório, movendo para gnrt/docs/example e executando gnrt .
Você pode então navegar em http://localhost:8080/ movendo para a pasta public gerada e executando python3 -m http.server 8080 .
Você também pode conferir um blog ao vivo gerado pelo gnrt e ler este artigo sobre o gnrt.