Windows 上的 Jekyll

虽然 Windows 不是官方支持的平台,但它可以通过适当的调整来运行 Jekyll。

安装 Ruby 和 Jekyll

通过 RubyInstaller 安装

安装 Ruby 和 Jekyll 最简单的方法是使用 Windows 的 RubyInstaller

RubyInstaller 是一个自包含的基于 Windows 的安装程序,其中包括 Ruby 语言、执行环境、重要文档等。

我们在此仅介绍 RubyInstaller-2.4 及更高版本。较旧版本需要 手动安装 Devkit

  1. RubyInstaller 下载 下载并安装一个 Ruby+Devkit 版本。使用默认安装选项。
  2. 在安装向导的最后阶段运行 ridk install 步骤。这对于安装带有本机扩展的 gem 是必需的。你可以在 RubyInstaller 文档 中找到有关此内容的其他信息。从选项中选择 MSYS2 和 MINGW 开发工具链
  3. 从开始菜单打开一个新的命令提示符窗口,以便对 PATH 环境变量的更改生效。使用 gem install jekyll bundler 安装 Jekyll 和 Bundler
  4. 检查 Jekyll 是否已正确安装:jekyll -v

如果 Jekyll 未正确安装,您可能会收到错误。重新启动系统,然后再次运行 jekyll -v。如果错误仍然存在,请打开 RubyInstaller 问题

好了,您已准备好使用 Jekyll!

通过 Windows 10 上的 Bash 进行安装

如果您使用的是 Windows 10 版本 1607 或更高版本,运行 Jekyll 的另一个选择是 安装 Linux 的 Windows 子系统。

您必须已启用 Linux 的 Windows 子系统

确保所有软件包和存储库都是最新的。打开新的命令提示符或 PowerShell 窗口,然后键入 bash

您的终端现在应为 Bash 实例。接下来,更新您的存储库列表和软件包

sudo apt-get update -y && sudo apt-get upgrade -y

接下来,安装 Ruby。为此,让我们使用 BrightBox 的存储库,它托管了针对 Ubuntu 优化的 Ruby 版本。

sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.5 ruby2.5-dev build-essential dh-autoreconf

接下来,更新您的 Ruby gem

gem update

安装 Jekyll

gem install jekyll bundler

这里没有 sudo

检查您的 Jekyll 版本

jekyll -v

好了!您已准备好开始使用 Jekyll。

您可以通过检查 _posts 文件夹来确保时间管理正常工作。您应该会看到一个 Markdown 文件,其文件名中包含当前日期。

非超级用户帐户问题

如果 `jekyll new` 命令打印错误“您的用户帐户无权安装到系统 RubyGems”,请参阅 故障排除 中的“以非超级用户身份运行 Jekyll”说明。

Windows 上的 Ubuntu 中的 Bash 仍在开发中,因此您可能会遇到问题。

编码

如果您使用 UTF-8 编码,如果文件以表示 BOM 的字符开头,Jekyll 将中断。因此,如果此字节序列出现在文件开头,请将其删除。

此外,如果在网站生成过程中遇到 Liquid 异常:不兼容的字符编码 错误,则可能需要将控制台窗口的代码页更改为 UTF-8。运行以下命令

chcp 65001

时区管理

由于 Windows 没有 zoneinfo 数据的本机源,因此 Ruby 解释器不理解 IANA 时区。使用它们时,TZ 环境变量默认设置为 UTC/GMT 00:00。

尽管 Windows 用户还可以通过设置键来使用 POSIX 格式定义时区来定义其博客的时区,但当需要根据 DST 规则更改时钟时,这种方式并不友好。

Jekyll 现在使用 rubygem 在内部根据已建立的 IANA 时区数据库 来配置时区。

使用 Jekyll v3.4 及更高版本创建的“新”博客将在其 Gemfile 中默认添加以下内容,现有网站必须更新其 Gemfile(和已安装的 gem)才能在 Windows 上进行开发

# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
  gem "tzinfo", ">= 1", "< 3"
  gem "tzinfo-data"
end

自动重新生成

在构建或提供服务期间指定 --watch 开关时,Jekyll 使用 listen gem 来监视更改。虽然 listen 对 UNIX 系统有内置支持,但它可能需要一个额外的 gem 才能与 Windows 兼容。

如果您仅在 Windows 上遇到自动重新生成的问题,请将以下内容添加到您网站的 Gemfile

gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?

您必须使用 RubyInstaller 的 Ruby+Devkit 版本并安装 MSYS2 构建工具才能成功安装 wdm gem。