Jekyll 在某些机器上创建绝对路径
Jekyll creates absolute paths on some machines
我们使用 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 }}">
.
为什么它在不同机器上的工作方式不同
通过在调用 jekyll serve --incremental
之前删除 _site
文件夹实现了相同的行为,因为之前使用了相对路径并且 jekyll serve
似乎只更新了站点的某些部分。
然后,原来的 {{site.url}}{{ site.baseurl}}/public/img.png
实际上在任何情况下都指定了一个绝对路径,因为 site.url
似乎从 _config.yml
中获取了硬编码的 url
属性,而不是神奇地将这个值设置为已部署的符合我预期的网页本地 URI。
我最初使用 site.url
和 site.baseurl
的原因是我还使用 github 页面部署到域的子文件夹中,但该用例由 relative_url 还有。
更新OP的解决方案
问题已通过对图像 [2]
使用 relative_url
解决
[2]https://jekyllrb.com/docs/liquid/filters/
原版Post
在我过去的 Jekyll 项目[1]中,我们能够在各种平台上毫无问题地使用 jekyll serve
。我们有可能通过在所有图像 URL 上使用 relative
[1] 来避免您看到的问题。这是一个例子
<img id="myImage" src="{{ "/img/myImage.png" | relative }}" alt="My Image">
我没有尝试重现您的问题,所以我无法确认 relative
是否让我们的 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 }}">
.
为什么它在不同机器上的工作方式不同
通过在调用 jekyll serve --incremental
之前删除 _site
文件夹实现了相同的行为,因为之前使用了相对路径并且 jekyll serve
似乎只更新了站点的某些部分。
然后,原来的 {{site.url}}{{ site.baseurl}}/public/img.png
实际上在任何情况下都指定了一个绝对路径,因为 site.url
似乎从 _config.yml
中获取了硬编码的 url
属性,而不是神奇地将这个值设置为已部署的符合我预期的网页本地 URI。
我最初使用 site.url
和 site.baseurl
的原因是我还使用 github 页面部署到域的子文件夹中,但该用例由 relative_url 还有。
更新OP的解决方案
问题已通过对图像 [2]
使用relative_url
解决
[2]https://jekyllrb.com/docs/liquid/filters/
原版Post
在我过去的 Jekyll 项目[1]中,我们能够在各种平台上毫无问题地使用 jekyll serve
。我们有可能通过在所有图像 URL 上使用 relative
[1] 来避免您看到的问题。这是一个例子
<img id="myImage" src="{{ "/img/myImage.png" | relative }}" alt="My Image">
我没有尝试重现您的问题,所以我无法确认 relative
是否让我们的 Jekyll 项目跨平台兼容。