如何动态生成 Jekyll 配置文件
创始人
2024-03-02 08:52:13
0

使用 Python 或 Bash 将动态数据插入 Jekyll 静态网站中,并且避免创建一个 API 后端。

静态网站生成器 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,并使它们在我的本地笔记本电脑上工作。

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 配置文件。然后我可以在 buildserve 过程中结合这些文件。

对于 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

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

不输出 Jekyll 文章...
要实现不输出 Jekyll 文章的输出(不输出单独的 HTML 文...
2025-01-07 07:30:35
bundler:无法加载命...
这种错误通常发生在安装了多个 Ruby 版本或多个 Gem 时出现...
2024-12-27 01:31:07
bundler:未能加载命...
这个错误通常是由于jekyll和bundler之间的版本不兼容所引...
2024-12-27 01:30:56
Bundler无法加载命令...
这个问题的根本原因是由于bundler内部依赖的httparty库...
2024-12-27 01:02:11
Bundler无法加载命令...
这个问题通常是由于Gemfile.lock文件升级或更改后导致版本...
2024-12-27 01:01:32
bundler:加载命令j...
此错误通常由于 Jekyll 的版本问题导致,解决方法是将 Jek...
2024-12-27 00:30:53

热门资讯

Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
通过 SaltStack 管理... 我在搜索Puppet的替代品时,偶然间碰到了Salt。我喜欢puppet,但是我又爱上Salt了:)...
Epic 游戏商店现在可在 S... 现在可以在 Steam Deck 上运行 Epic 游戏商店了,几乎无懈可击! 但是,它是非官方的。...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
2024 开年,LLUG 和你... Hi,Linuxer,2024 新年伊始,不知道你是否已经准备好迎接新的一年~ 2024 年,Lin...
什么是 KDE Connect... 什么是 KDE Connect?它的主要特性是什么?它应该如何安装?本文提供了基本的使用指南。科技日...
Opera 浏览器内置的 VP... 昨天我们报道过 Opera 浏览器内置了 VPN 服务,用户打开它可以防止他们的在线活动被窥视。不过...