mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-25 23:11:02 +08:00
parent
ce02adcf9c
commit
7ebda984a4
@ -3,57 +3,55 @@
|
|||||||
[#]: author: "Ayush Sharma https://opensource.com/users/ayushsharma"
|
[#]: author: "Ayush Sharma https://opensource.com/users/ayushsharma"
|
||||||
[#]: collector: "lujun9972"
|
[#]: collector: "lujun9972"
|
||||||
[#]: translator: "geekpi"
|
[#]: translator: "geekpi"
|
||||||
[#]: reviewer: " "
|
[#]: reviewer: "wxy"
|
||||||
[#]: publisher: " "
|
[#]: publisher: "wxy"
|
||||||
[#]: url: " "
|
[#]: url: "https://linux.cn/article-13957-1.html"
|
||||||
|
|
||||||
我如何动态地生成 Jekyll 配置文件
|
如何动态生成 Jekyll 配置文件
|
||||||
======
|
======
|
||||||
使用 Python 或 Bash 将动态数据插入 Jekyll 静态网站中,并且避免创建一个 API 后端。
|
|
||||||
![Digital creative of a browser on the internet][1]
|
|
||||||
|
|
||||||
[Jekyll][2],静态网站生成器,使用 `_config.yml` 进行配置。这些配置都是 Jekyll 特有的。但你也可以在这些文件中[用我们自己的内容定义变量][3],并在整个网站中使用它们。在本文中,我将重点介绍动态创建 Jekyll 配置文件的一些优势。
|
> 使用 Python 或 Bash 将动态数据插入 Jekyll 静态网站中,并且避免创建一个 API 后端。
|
||||||
|
|
||||||
|
![](https://img.linux.net.cn/data/attachment/album/202111/06/172709dqcv65spvl363fav.jpg)
|
||||||
|
|
||||||
|
静态网站生成器 [Jekyll][2] 使用 `_config.yml` 进行配置。这些配置都是 Jekyll 特有的。但你也可以在这些文件中 [用我们自己的内容定义变量][3],并在整个网站中使用它们。在本文中,我将重点介绍动态创建 Jekyll 配置文件的一些优势。
|
||||||
|
|
||||||
在我的本地笔记本电脑上,我使用以下命令来服务我的 Jekyll 网站进行测试:
|
在我的本地笔记本电脑上,我使用以下命令来服务我的 Jekyll 网站进行测试:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
`bundle exec jekyll serve --incremental --config _config.yml`
|
bundle exec jekyll serve --incremental --config _config.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
### 结合多个配置文件
|
### 结合多个配置文件
|
||||||
|
|
||||||
在本地测试中,有时需要覆盖配置选项。我的网站的[当前 _config.yml][4] 有以下设置:
|
在本地测试中,有时需要覆盖配置选项。我的网站的 [当前 _config.yml][4] 有以下设置:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
# Jekyll Configuration
|
# Jekyll Configuration
|
||||||
|
|
||||||
# Site Settings
|
# Site Settings
|
||||||
url: "<https://notes.ayushsharma.in>"
|
url: "https://notes.ayushsharma.in"
|
||||||
website_url: "<https://notes.ayushsharma.in/>"
|
website_url: "https://notes.ayushsharma.in/"
|
||||||
title: ayush sharma's notes ☕ + 🎧 + 🕹️
|
title: ayush sharma's notes ☕ + 🎧 + 🕹️
|
||||||
email: [ayush@ayushsharma.in][5]
|
email: ayush@ayushsharma.in
|
||||||
images-path: /static/images/
|
images-path: /static/images/
|
||||||
videos-path: /static/videos/
|
videos-path: /static/videos/
|
||||||
js-path: /static/js/
|
js-path: /static/js/
|
||||||
baseurl: "" # the subpath of your site, e.g. /blog
|
baseurl: "" # the subpath of your site, e.g. /blog
|
||||||
```
|
```
|
||||||
|
|
||||||
由于本地的 `jekyll serve` URL 是 http://localhost:4000,上面定义的 URL 就不能用了。我可以创建一个 `_config.yml` 的副本 `_config-local.yml` 并替换所有的值。但还有一个更简单的选择。
|
由于本地的 `jekyll serve` URL 是 `http://localhost:4000`,上面定义的 URL 就不能用了。我可以创建一个 `_config.yml` 的副本 `_config-local.yml` 并替换所有的值。但还有一个更简单的选择。
|
||||||
|
|
||||||
Jekyll 允许[指定多个配置文件][6],后面的声明覆盖前面的声明。这意味着我可以用以下代码定义一个新的 `_config-local.yml`:
|
Jekyll 允许[指定多个配置文件][6],后面的声明覆盖前面的声明。这意味着我可以用以下代码定义一个新的 `_config-local.yml`:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
`url:""`
|
url:""
|
||||||
```
|
```
|
||||||
|
|
||||||
然后我可以把上述文件和我的主 `_config.yml` 结合起来,像这样:
|
然后我可以把上述文件和我的主 `_config.yml` 结合起来,像这样:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
`bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml`
|
bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
通过合并这两个文件,这个 `jekyll serve` 的 `url` 的最终值将是空白。这就把我网站中定义的所有 URL 变成了相对的 URL,并使它们在我的本地笔记本电脑上工作。
|
通过合并这两个文件,这个 `jekyll serve` 的 `url` 的最终值将是空白。这就把我网站中定义的所有 URL 变成了相对的 URL,并使它们在我的本地笔记本电脑上工作。
|
||||||
@ -62,31 +60,27 @@ Jekyll 允许[指定多个配置文件][6],后面的声明覆盖前面的声
|
|||||||
|
|
||||||
一个简单的例子,假设你想在你的网站上显示当前日期。它的 bash 命令是:
|
一个简单的例子,假设你想在你的网站上显示当前日期。它的 bash 命令是:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
> date '+%A, %d %B %Y'
|
> date '+%A, %d %B %Y'
|
||||||
Saturday, 16 October 2021
|
Saturday, 16 October 2021
|
||||||
```
|
```
|
||||||
|
|
||||||
我知道我也可以[使用 Jekyll 的 _config.yml 的自定义内容][3]。我将上述日期输出到一个新的 Jekyll 配置文件中。
|
我知道我也可以 [使用 Jekyll 的 _config.yml 的自定义内容][3]。我将上述日期输出到一个新的 Jekyll 配置文件中。
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
`my_date=`date '+%A, %d %B %Y'`; echo 'my_date: "'$my_date'"' > _config-data.yml`
|
my_date=`date '+%A, %d %B %Y'`; echo 'my_date: "'$my_date'"' > _config-data.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
现在 `_config-data.yml` 包含:
|
现在 `_config-data.yml` 包含:
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
`my_date: "Saturday, 16 October 2021"`
|
my_date: "Saturday, 16 October 2021"
|
||||||
```
|
```
|
||||||
|
|
||||||
我可以把我的新配置文件和其他文件结合起来,在我的网站上使用 `my_date` 变量。
|
我可以把我的新配置文件和其他文件结合起来,在我的网站上使用 `my_date` 变量。
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
`bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml,_config-data.yml`
|
bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml,_config-data.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
在运行上述命令时,`{{ site.my_date }}` 输出其配置的值。
|
在运行上述命令时,`{{ site.my_date }}` 输出其配置的值。
|
||||||
@ -101,9 +95,7 @@ Saturday, 16 October 2021
|
|||||||
|
|
||||||
我希望这能在你的下一个静态网站项目中给你一些帮助。继续阅读,并祝你编码愉快。
|
我希望这能在你的下一个静态网站项目中给你一些帮助。继续阅读,并祝你编码愉快。
|
||||||
|
|
||||||
* * *
|
这篇文章最初发布在 [作者的网站][11] 上,并经授权转载。
|
||||||
|
|
||||||
_这篇文章最初发布在[作者的网站][11]上,并经授权转载。_
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -112,7 +104,7 @@ via: https://opensource.com/article/21/11/jekyll-config-files
|
|||||||
作者:[Ayush Sharma][a]
|
作者:[Ayush Sharma][a]
|
||||||
选题:[lujun9972][b]
|
选题:[lujun9972][b]
|
||||||
译者:[geekpi](https://github.com/geekpi)
|
译者:[geekpi](https://github.com/geekpi)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
Loading…
Reference in New Issue
Block a user