Gere um site estático e feeds Atom, com Markdown, shell e pandoc.
git clone pdssg, de preferência ao lado do diretório de origem do seu site.
git clone https://github.com/torresjrjr/pdssg
Para executar o pdssg e construir um site estático, execute o script pdssg em um diretório acima do diretório de origem do site.
$ ls
src/ pdssg/
$ ./pdssg/pdssg
pdssg é um script de shell executável único, sem sinalizadores de linha de comando. Ele simplesmente gera um diretório de site vizinho dst/
(destino) a partir de um diretório vizinho src/
(fonte) existente com o conteúdo do site (arquivos Markdown a serem convertidos em páginas HTML e outros arquivos).
O design do pdssg é modular e baseado em árvore. Aqui está um exemplo de diretório de origem do site .
src/
|-- _ignore
|-- _feeds
|-- index.md
|-- about.md
|-- posts.md
|-- posts/
| |-- _drafts/
| | `--- 2020-04-01-bored.md
| |-- 2020-01-01-new-year.md
| |-- 2020-02-01-corona-what.md
| `-- 2020-03-01-stuck-at-home.md
|-- feeds/
| `-- posts.md
|-- assets/
| `-- style.css
|-- _templates/
| |-- atom.xml
| `-- main.html
`-- _includes/
|-- header.html
|-- footer.html
`-- meta.html
Aqui está o diretório de compilação resultante.
dst/
|-- index.html
|-- about.html
|-- posts.html
|-- posts/
| |--- 2020-01-01-new-year.html
| |--- 2020-02-01-corona-what.html
| `--- 2020-03-01-stuck-at-home.html
|-- feeds/
| `--- posts.html
`-- assets/
`--- style.css
Nota: arquivos e diretórios que começam com sublinhado _
serão descartados.
Os arquivos Markdown serão convertidos em arquivos HTML, prontos como páginas da web. As exceções são caminhos de arquivos correspondentes a padrões em um arquivo ./_ignore
, como um arquivo .gitignore
.
pdssg espera que os arquivos Markdown tenham um bloco frontmatter YAML, que é um bloco de metadados YAML cercado por um par de ---
, precedendo o restante do conteúdo do arquivo.
O frontmatter deve ter pelo menos um valor title
, que será usado para criar um cabeçalho de título <h1>
. os valores author
e date
são comuns e recomendados quando apropriado.
Exemplo de arquivo Markdown:
---
title : My Webpage Title
author : John Smith
date : 2020-12-30
---
## Subheading
contents...
Assim como no exemplo, os diretórios _includes
e _templates
serão utilizados para gerar os arquivos HTML e Atom. Eles são então descartados.
Para os arquivos em _templates
:
atom.xml
é usado para criar documentos HTML.main.html
é usado para criar feeds Atom. Para os arquivos em _includes
:
meta.html
é inserido no cabeçalho do documento dentro das tags <meta>
.header.html
é inserido no corpo dentro das tags <body>
, antes do conteúdo principal.footer.html
é inserido no corpo dentro das tags <body>
, após o conteúdo principal.Os feeds Atom são feeds semelhantes a RSS baseados em um formato de distribuição mais novo e robusto. Eles são essencialmente usados como RSS e chamados como tal. Os feeds Atom permitem que os leitores assinem o novo conteúdo de um site, como um blog.
pdssg pode criar feeds Atom a partir de diretórios, com os arquivos do diretório como entradas de feed. Para fazer isso, você precisa criar um diretório especificado para seus feeds e criar um "arquivo inicial Atom" como tal:
./feeds/
) e escreva seu caminho no arquivo de configuração _feeds
./posts/
)../feeds/posts/
)..md
ao caminho (por exemplo, ./feeds/posts.md
). Consulte o site de exemplo acima para demonstração (o diretório posts/
).
O arquivo inicial Atom será convertido em um arquivo de feed Atom. Este feed resultante existirá no novo caminho, mas com uma extensão .xml
em vez de .md
. Neste exemplo, o feed atom aparecerá em example.com/feeds/posts.xml
. Observe que o arquivo ./posts.md
não é necessário para um feed, apenas um diretório.
NOTA: As entradas do Atom são ordenadas alfanumericamente pelos nomes dos arquivos correspondentes, não pela date
especificada pelo frontmatter YAML.
Este projeto nasceu de um desafio pessoal, para o meu próprio site. A pedido de um simpático blogueiro, limpei e tornei público.
Entre em contato comigo: t.me/torresjrjr