Jekyll框架GitHub Pages在Netlify构建中遇到的问题

Build GitHub Pages with Jekyll framework on Netlify

Posted by Kowalski Dark on May 27, 2018

Netlify

Netlify 是一个提供静态网站托管的服务,提供CI服务,能够将托管 GitHub,GitLab 等网站上的 Jekyll,Hexo,Hugo 等静态网站。

简单来说你可以通过 Netlify 访问存放 GitHub Pages 的 repo,将网站放到 Netlify 的免费 CDN 上来解决网络拥堵问题,甚至通过 Netlify 来获取 Let’s Encrypt 的SSL证书,给自己的网站加上https访问。

Gemfile 和 Gemfile.lock

Gemfile是我们创建的一个用于描述gem之间依赖的文件。gem是一堆Ruby代码的集合,它能够为我们提供调用。你的Gemfile必须放在项目的根目录下面, 这是Bundler的要求,对于任何的其他形式的包管理文件来说,这也是标准。这里值得注意的一点是Gemfile会被作为Ruby代码来执行。当在Bundler上下文环境中被执行的时能使我们访问一些方法,我们用这些方法来解释gem之间的require关系。

由于Jekyll框架中使用 Ruby,所以在 Netlify 上构建时需要提供 GemfileGemfile.lock 两个文件,明确 Jekyll 版本等参数。

先在 _config.yml 文件里找到当前使用的Jekyll版本,然后在根目录下创建 GemfileGemfile.lock 两个文件,内容均为

source "https://rubygems.org"

gem 'jekyll', '~> 3.0'

gem 'jekyll-paginate', group: :jekyll_plugins

其中的

gem 'jekyll', '~> 3.0'

需要修改成目前使用的 Jekyll 版本号。

在Netlify上构建网站

按照引导操作,如 GemfileGemfile.lock 配置正确,Netlify 会自动填写如下内容:

Build command

jekyll build

Publish directory

_site/

具体流程可以参照 使用 Netlify 持续集成你的静态网站, 或官方文档和其他Blog。

如果遇到

 Dependency Error: Yikes! It looks like you don't have jekyll-paginate or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. The full error message from Ruby is: 'cannot load such file -- jekyll-paginate' If you run into trouble, you can find helpful resources at https://jekyllrb.com/help/! 

这样的报错就说明上述文件的配置有可能问题。

如果遇到

jekyll 3.8.2 | Error:  The jekyll-theme-cayman theme could not be found.

这样的报错,请删除 _config.yml 相关的theme参数行。

如果遇到

Deprecation: The 'gems' configuration option has been renamed to 'plugins'. Please update your config file accordingly.

这样的警告,可以选择无视,也可以修改 _config.yml 里相关区块的 gemsplugins

Copyright

作者 DarkKowalski

本文采用 CC BY-NC 4.0 许可协议, 转载请注明出处。