为什么 jekyll 中的某些主题需要不同版本的 jekyll?

Why some themes in jekyll require different versions of jekyll?

我正在浏览 rubygems.org Jekyll 中的主题,它们给当前版本的 jekyll 带来了麻烦。

像这里一样,我正在试用 linaro-jekyll-theme。我得到了这个

正在从 https://rubygems.org/........ 中获取 gem 元数据。 解决依赖关系.... Bundler 找不到 gem“jekyll”的兼容版本: 在宝石文件中: 杰基尔 (~> 4.2.1)

linaro-jekyll-theme was resolved to 1.0, which depends on
  jekyll (~> 3.4)

Bundler 找不到 gem“linaro-jekyll-theme”的兼容版本: 在快照中(Gemfile.lock): linaro-jekyll-主题 (= 1.0)

在 Gemfile 中: linaro-jekyll-主题

运行 bundle update 将从头开始重建您的快照,仅使用 Gemfile 中的 gems,这可能会解决冲突。

如何根据需要更改jekyll版本。换了这么多次版本有什么问题吗?

Jekyll 主题(或一般的 gem)可能依赖于另一个 gem 的特定版本,因为

  • 取决于在更高版本中删除或更改的某些功能或
  • 作者只是将版本固定为提醒,以便在发布新的主要版本时检查兼容性,因为主要版本可能会破坏 gem。

在这个例子中,作者可能已经知道他们的 gem 与 Jekyll 3.x 一起工作但不再与 4.x 一起工作,或者他们只是想稍后重新访问主题仍然使用 Jekyll 4.x 但从未使用过。

改变版本并不是一个真正的问题,因为有了 bundler,你可以很容易地做到这一点,而且只要你想或需要。但是降级 gem 可能存在一般性问题。发布较新版本主要有两个原因:

  1. 添加新功能和
  2. 修复错误和安全漏洞。

当您使用旧版本的 gem 时,您可能会错过新功能,如果您不需要它们,这些功能可能没问题。但您也可能会面临已在更高版本中修复的安全漏洞。

我的建议是:

  • 尽可能使用最新版本的 gem。
  • 如果另一个 gem 依赖于旧版本,因此您更新到最新版本,那么我会问自己是否真的值得使用这样一个过时的 gem .当 gem 长时间未更新以依赖最新版本时,很可能不再更新,这是一个风险。
  • 如果您仍然想要或需要降级,那么我建议您查看 gem 的变更日志,您会错过哪些功能和错误修复。并在未来定期检查更新日志。

此上下文中的有用链接:Jekyll versions, as you can see Jekyll 3.4 is about five years old that is a lot of time to build new features, fix bugs and security vulnerabilities. And a lot of time for a theme author to make a theme compatible with newer versions. And the Jekyll Changelog 列表,您可以在其中检查降级到 3.4 而不是使用最新版本(当前为 4.2.1)时会丢失的内容。而且这个名单很长。