我如何动态生成 Jekyll 配置文件

使用 Python 或 Bash 将动态数据插入 Jekyll 静态站点,避免创建 API 后端。
38 位读者喜欢这篇文章。
Digital creative of a browser on the internet

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 serveurl 的最终值将为空白。这会将我的网站中定义的所有 URL 转换为相对 URL,并使它们在我的本地笔记本电脑上工作。

合并动态配置文件

作为一个简单的示例,假设您想在您的网站上显示当前日期。用于此目的的 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 配置文件。然后我可以在 buildserve 过程中将它们合并。

对于 findmymastodon.com我正在使用 Python 获取 Mastodon 用户统计信息。然后我将这些信息写入一个新的 _config-data.yml 文件(目前是手动)。最后,主页和其他页面从配置文件中显示这些信息。这样,我可以利用动态后端,同时仍然保留我非常喜欢的静态网站的优点。

我希望这能为您的静态网站激发一些想法。Jamstack 非常适合静态网站,但您可以避免为动态内容创建整个 API 后端。为什么不使用构建作业来创建包含更新内容的配置文件呢?它可能不适合所有用例,但减少一个 API 意味着更少的基础设施移动部件。

我希望这能在您的下一个静态网站项目中以某种方式帮助您。继续阅读,祝您编码愉快。


本文最初发表在作者的网站上,经许可转载。

接下来阅读什么

使用 Jekyll 构建您的网站

Jekyll 是一个开源静态站点生成器。您可以使用 Markdown 编写内容,使用 HTML/CSS 进行结构和演示,Jekyll 会将它们全部编译成静态…

https://ayushsharma.in
我是一名作家和 AWS 解决方案架构师。我与初创公司和企业合作进行软件工程、DevOps、SRE 和云架构。我在 https://ayushsharma.in 上撰写关于我的经验的文章。

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.