jekyll - 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 解决了这个问题,但我必须进行两次修改
- 图片路径使用单引号,否则与外部双引号冲突。
- 使用
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 中。
解决方案
使用 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 项目跨平台兼容的原因。
推荐阅读
- javascript - 电子中的定时功能
- c - 计算数组中有多少个数满足特定条件的函数
- django - django-rest-framework get_schema_view:TypeError:“文档”类型的对象不是 JSON 可序列化的
- angular - 将 asp.net 核心 API 与主机中的 Angular 应用程序集成
- airflow - Apache Airflow AttributeError:“NoneType”对象没有属性“create_dagrun”
- javascript - 新日期没有给我正确的价值
- swiftui - 我无法让我的 LazyVGrid 显示超过两行
- python - User.query.filter_by(id=user_id).first() 和 User.query.get(user_id) 在 Flask Sql Alchemy 中返回 None
- c# - C#面临通过Base64加密和解密文本的问题
- css - iOS Safari - 使用 CSS 更改选择下拉选项字体大小?