用 Python 编写的轻量级静态站点生成器。
特征:
pip install --upgrade gnrt
您可能需要将$HOME/.local/bin
添加到$PATH
。
gnrt
gnrt
将在当前工作目录中查找可选的config.yml
文件,在templates
夹中查找可选的 Jinja2 模板,在content
文件夹中查找 markdown 文件,然后将生成的输出文件写入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 扩展,请参阅 Extras 以获取值列表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
key自定义文件路径。例如,这允许生成 RSS 提要。
内容文件具有.md
扩展名,并存储在content
文件夹中。
内容文件可能具有用 YAML 编写的 frontmatter(即结构化元数据)。
这是可以覆盖默认值的地方。
例子:
---
id: home
title: Home
link: /
nav-order: 3
---
id
:当前项目标识符,可以在任何内容文件中使用它来访问该项目的元数据link
: 生成页面的 URLtarget
: 生成文件的路径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
来生成该网站。
然后,您可以通过移动到生成的public
文件夹并执行python3 -m http.server 8080
来在http://localhost:8080/
上浏览它。
您可能还想查看 gnrt 生成的实时博客并阅读这篇关于 gnrt 的文章。