为什么无法访问 Jekyll remote_theme 的 `_config` 文件中的站点变量?

Why are site variables in a Jekyll remote_theme's `_config` file not accessible?

According to this, "Jekyll will read-in a _config.yml at the root of the theme-gem and merge its data into the site’s existing configuration data." 但我创建了一个主题,其配置如下所示:

并且我在我的主题 css 中引用了这样的变量:(注意最后一行的空 frontmatter 和 liquid 标签。)

结果在呈现的网站中是这样的:(注意我的 liquid 标签曾经所在的空字符串。)

如果我将变量放在我网站的 _config 中而不是主题中,一切都会按预期工作。但我希望这些变量与主题相关联。

更神秘的是,我可以在公共 minimal-mistakes theme 中找到示例,其中站点变量在主题中定义,然后在主题文件中毫无问题地使用,就像我在主题文件中使用的一样。 (注意site.yadda.yadda,定义在根目录的config.yml。)

我没有创建完整的 gem;我正在使用 github-pages' remote_theme 功能。我怀疑这是原因,除了像 minimal-mistakes 这样的主题通过这种方法可以正常工作。

这是怎么回事?

我也在 on the Jekyll GitHub 上提出了这个问题并得到了一些答案:

该功能在 GitHub 页面上不起作用,因为它使用 Jekyll 3.8.6 进行部署,而不是 4.0.0,并且这种使用主题 _config.yml 中的变量的能力是一项新功能新版本中的功能。

最小错误和其他主题在其配置文件中定义变量仅作为用户可能在您站点的配置文件中执行的操作的示例,因此 index.html 和主题目录中定义的其他演示本身有一些东西在 jekyll served 时作为参考。在某些情况下,您确实需要提供这些值,或者主题看起来不像预期的那样。在其他情况下,主题 _includes 具有条件性 Liquid 标签,因此如果子站点中缺少变量,则不会呈现页面的整个部分。

解决方案?

  1. 等待GitHub使用4.0.0,貌似大家已经问了,等了将近一年了
  2. 定义子站点中的所有变量。如果您确实需要主题包含此信息以便可以跨多个站点重复使用,则不可行,
  3. 不使用变量和 Liquid 代码,而是在变量出现的任何地方硬编码值。
  4. 在本地使用 Jekyll 4.0.0 构建,并将 _site 工件手动或通过持续集成推送到 gh-pages 分支。 (设置劳动密集型,对于用户页面站点不太可行,因为它从 master 呈现,目前无法使用 remote_themes 因为 it's broken for 4.0.0
  5. 使用其他一些支持 Jekyll 4.0.0 的服务来部署,比如 Netlify。但这种做法违背了 .
  6. 的目的

因为我没有很多变量,所以我现在要进行硬编码,等待 Jekyll 3.8.6/4.0.0 的出现。