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