如何動態生成 Jekyll 配置文件
靜態網站生成器 Jekyll 使用 _config.yml
進行配置。這些配置都是 Jekyll 特有的。但你也可以在這些文件中 用我們自己的內容定義變數,並在整個網站中使用它們。在本文中,我將重點介紹動態創建 Jekyll 配置文件的一些優勢。
在我的本地筆記本電腦上,我使用以下命令來服務我的 Jekyll 網站進行測試:
bundle exec jekyll serve --incremental --config _config.yml
結合多個配置文件
在本地測試中,有時需要覆蓋配置選項。我的網站的 當前 _config.yml 有以下設置:
# Jekyll Configuration
# Site Settings
url: "https://notes.ayushsharma.in"
website_url: "https://notes.ayushsharma.in/"
title: ayush sharma's notes ☕ + ? + ?️
email: ayush@ayushsharma.in
images-path: /static/images/
videos-path: /static/videos/
js-path: /static/js/
baseurl: "" # the subpath of your site, e.g. /blog
由於本地的 jekyll serve
URL 是 http://localhost:4000
,上面定義的 URL 就不能用了。我可以創建一個 _config.yml
的副本 _config-local.yml
並替換所有的值。但還有一個更簡單的選擇。
Jekyll 允許指定多個配置文件,後面的聲明覆蓋前面的聲明。這意味著我可以用以下代碼定義一個新的 _config-local.yml
:
url:""
然後我可以把上述文件和我的主 _config.yml
結合起來,像這樣:
bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml
通過合併這兩個文件,這個 jekyll serve
的 url
的最終值將是空白。這就把我網站中定義的所有 URL 變成了相對的 URL,並使它們在我的本地筆記本電腦上工作。
C結合動態配置文件
一個簡單的例子,假設你想在你的網站上顯示當前日期。它的 bash 命令是:
> date '+%A, %d %B %Y'
Saturday, 16 October 2021
我知道我也可以 使用 Jekyll 的 _config.yml 的自定義內容。我將上述日期輸出到一個新的 Jekyll 配置文件中。
my_date=`date '+%A, %d %B %Y'`; echo 'my_date: "'$my_date'"' > _config-data.yml
現在 _config-data.yml
包含:
my_date: "Saturday, 16 October 2021"
我可以把我的新配置文件和其他文件結合起來,在我的網站上使用 my_date
變數。
bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml,_config-data.yml
在運行上述命令時,{{ site.my_date }}
輸出其配置的值。
結論
上面的例子很簡單,但可能性是無窮的。Bash、Python 和其他編程語言可以動態地生成 Jekyll 配置文件。然後我可以在 build
或 serve
過程中結合這些文件。
對於 findmymastodon.com,我使用 Python 來獲取 Mastodon 的用戶統計數據。然後我把這些寫進一個新的 _config-data.yml 文件(目前是手動)。最後,主頁和其他頁面從配置文件中顯示這些。這樣,我就可以利用一個動態的後台,並且仍然保持我所喜歡的所有靜態網站的優點。
我希望這能為你自己的靜態網站激發一些想法。Jamstack 對於靜態網站是很好的,但你可以避免為動態內容創建整個 API 後台。為什麼不使用一個構建作業來創建帶有更新內容的配置文件呢?這可能不適合每一種情況,但少一個 API 意味著更少的基礎設施移動部件。
我希望這能在你的下一個靜態網站項目中給你一些幫助。繼續閱讀,並祝你編碼愉快。
這篇文章最初發布在 作者的網站 上,並經授權轉載。
via: https://opensource.com/article/21/11/jekyll-config-files
作者:Ayush Sharma 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive