用 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 的文章。