首页 > 解决方案 > Jekyll 在某些机器上创建绝对路径

问题描述

我们使用 Jekyll 4.2.0 生成一个静态 HTML 站点,我们将其jekyll serve用于调试目的。在我的机器(Arch Linux)上,这可以正常工作,但在我同事的机器(Arch Linux 和 Mac OS)上,Jekyll 错误地生成绝对路径,因此例如本地站点上的图像链接指向例如 https://ourdomain// public/image.png 而不是 http://localhost:4000//public/image.png。

链接被定义为例如{{site.url}}{{ site.baseurl}}/public/img.png

如何让 Jekyll 在我的同事机器上保持本地路径完整?

解决方案

@Kin 解决了这个问题,但我必须进行两次修改

  1. 图片路径使用单引号,否则与外部双引号冲突。
  2. 使用relative_url而不是relative.

最终结果是<img src="{{ '/public/img.png' | relative_url }}">

为什么它在不同机器上的工作方式不同

_site通过在调用之前删除文件夹实现了相同的行为jekyll serve --incremental,因为之前使用了相对路径并且jekyll serve似乎只更新了站点的某些部分。然后,原始{{site.url}}{{ site.baseurl}}/public/img.png文件实际上在任何情况下都指定了一个绝对路径,因为它site.url似乎采用了硬编码url属性,_config.yml而不是像我预期的那样神奇地将这个值设置为部署的网页本地 URI。

site.url我最初使用的原因site.baseurl是我还使用 github 页面部署到域的子文件夹中,但该用例也包含在 relative_url 中。

标签: jekyll

解决方案


使用 OP 的解决方案进行更新

relative_url通过使用图像 [2]解决了该问题

[2] https://jekyllrb.com/docs/liquid/filters/

原帖

在我过去的 Jekyll 项目 [1] 中,我们能够jekyll serve在各种平台上毫无问题地使用。我们可能避免了您在relative我们所有图片 URL 上使用 [1] 时看到的问题。这是一个例子

<img id="myImage" src="{{ "/img/myImage.png" | relative }}" alt="My Image">

我没有尝试重新创建您的问题,所以我无法确认是否relative是我们的 Jekyll 项目跨平台兼容的原因。

[1] https://github.com/OpenLiberty/openliberty.io


推荐阅读