A minimalist static blog generator.
- Super simple
- Write pages in Markdown
- Generates valid RSS 2.0 feed
- Supports code highlighting (using Chroma)
echo 'Some `cool` _arbitrary_ **Markdown**!' | ptWhich prints:
<!DOCTYPE html>
<html lang="">
<head>
<title></title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<p>Some <code>cool</code> <em>arbitrary</em> <strong>Markdown</strong>!</p>
</body>
</html>go install github.com/hoffa/pt@latestOr check releases for the latest binaries.
Usage of pt:
-base-url string
base URL
-dir string
where to save generated files (default ".")
-feed string
feed target path (default "feed.xml")
-feed-template string
feed template path
-highlight string
code highlight style
-template string
page template pathPass the list of Markdown files to convert at the end.
Each page can contain a YAML front matter. It must be placed at the top within --- delimiters:
---
title: Hello, world!
date: 2019-02-11
---
This is an example page!Valid variables are:
title: page titledate: page creation dateexclude: ifyes, the page will be excluded from.Pagesand the RSS feed
.Title: page title.Date: page creation date.Path: path to the generated HTML file.Content: content of the generated HTML file.URL: URL of the generated HTML file prefixed by the value of-base-url.Exclude: boolean specifying whether this page is in.Pages.Pages: array of all non-excluded pages sorted bydate
See templates/page.html and templates/feed.xml for the default templates.
Create a page template as template.html:
<!DOCTYPE html>
<html>
<head>
<title>{{ .Title }}</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
{{ if eq .Path "index.html" }}
{{ .Content }}
<ul>
{{ range .Pages }}
<li><a href="{{ .URL }}">{{ .Title }}</a> ({{ .Date.Format "January 2, 2006" }})</li>
{{ end }}
</ul>
{{ else }}
{{ .Content }}
{{ end }}
</body>
</html>Create the index page as index.md:
---
title: Jane Doe
exclude: yes
---
Subscribe via [RSS](/feed.xml).And a post within a file called my-first-post.md:
---
title: My first post
date: 2019-04-20
---
This is an example **Markdown** _post_.
I like `turtles`.
```python
print("Hello!")
```Finally, build:
pt -base-url https://mysite.com -template template.html -highlight monokailight *.mdSee the Chroma Playground for available syntax highlighting styles.