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