You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jekyll的_data与assets目录外部引用仓库中的文件?

如何在Jekyll的_data与assets目录外部引用仓库中的文件?

我完全懂你现在的麻烦——几百张图片和JSON文件,复制一遍既占空间又不好维护,软链接试了也没效果,哪怕关了安全模式也不行。其实这个问题可以从Jekyll配置调整和规避GitHub Pages限制两个方向解决,给你几个实用的方案:

方案1:修改Jekyll配置,直接指定外部数据源与资产路径

这是最省心的方法,不用搞任何链接,直接让Jekyll去读你仓库根目录的文件:

  • 针对JSON数据文件:打开MySite/_config.yml,添加一行 data_dir: ../Data。这样Jekyll就会把仓库根目录的Data文件夹当作它的默认_data目录来读取,你在模板里还是可以用site.data.data1这种方式调用JSON里的内容,完全不用移动文件。
  • 针对图片资源:不用改配置,直接在模板里用相对仓库根目录的路径引用就行,比如/Images/imageFolder1/photo.jpg。不过要注意,如果你是在GitHub Pages上部署,一定要把_config.yml里的baseurl设置正确(比如你的站点是username.github.io/your-repo,那baseurl: "/your-repo"),这样生成的图片路径会自动带上仓库名,不会出现404。

本地测试的时候,记得在MySite目录下运行jekyll serve,Jekyll会自动解析../Data这种相对路径,完全没问题。

方案2:绕开GitHub Pages的软链接限制

你本地用软链接可能能正常工作,但GitHub Pages的官方构建环境默认强制开启安全模式,会直接忽略软链接(哪怕你本地关了safe模式也没用)。如果一定要用软链接,你可以换成GitHub Actions自定义构建:

  • 写一个简单的GitHub Actions脚本,在构建前先创建软链接(比如在脚本里执行ln -s ../../Images MySite/assets/images和ln -s ../../Data/*.json MySite/_data/),然后再运行jekyll build。这样就能绕开GitHub Pages的安全限制,软链接也能正常生效。不过这个方法需要你懂一点Actions的配置,适合愿意折腾的情况。

方案3:模板变量映射(适合少量文件,不推荐大量使用)

如果你的文件数量不多,也可以在MySite/_data里创建空的YAML文件,用include_relative来引用外部JSON内容,比如在MySite/_data/data1.yml里写:

---
{% include_relative ../../Data/data1.json %}
---

但你有几百个文件的话,这个方法太繁琐,还可能影响Jekyll的构建性能,所以只适合小体量的场景。

备注:内容来源于stack exchange,提问作者Osgboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 07:13:15