Skip to main content Link Search Menu Expand Document (external link)

最后我们将为生产环境的部署做准备。

Gemfile

推荐为您的站点使用 Gemfile。这会确保 Jekyll 和其他 Gem 的版本即使环境不同也能保持一致。

root 目录创建一个 Gemfile 文件。 该文件只是 ‘Gemfile’,应该有任何扩展名。 您可以通过 Bundler 创建 Gemfile,然后添加 jekyll Gem:

bundle init
bundle add jekyll

您的文件看起来应该这样:

# frozen_string_literal: true
source "https://rubygems.org"

gem "jekyll"

Bundler 安装 Gem,然后创建一个 Gemfile.lock —— 用于锁定当前 Gem 的版本号以备 bundle install 时用。如果您想要更新您的 Gem 版本,只需 bundle update 即可。

当使用 Gemfile 时,运行诸如 jekyll serve 命令时因该使用 bundle exec 前缀。所以完整命令是:

bundle exec jekyll serve

这将限制您的 Ruby 环境只用您的 Gemfile 中设定的 Gem 版本。

插件

Jekyll 插件允许您针对您的站点创建定制生成内容。这有一些可用插件,或者您也可以编写自己的插件。

几乎所有 Jekyll 站点都用的三款官方支持插件:

第一次使用这些您需要将它们添加到 Gemfile。如果您将它们放入了 jekyll_plugins 组,它们会自动被 Jekyll require

source 'https://rubygems.org'

gem 'jekyll'

group :jekyll_plugins do
  gem 'jekyll-sitemap'
  gem 'jekyll-feed'
  gem 'jekyll-seo-tag'
end

然后添加下面代码行到您的 _config.yml

plugins:
  - jekyll-feed
  - jekyll-sitemap
  - jekyll-seo-tag

现在通过运行 bundle update 安装它们。

jekyll-sitemap 不需要任何设置,系统在构建时会创建您的站点地图。

对于 jekyll-feedjekyll-seo-tag,您需要添加 Tag 到 _layouts/default.html:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>{{ page.title }}</title>
    <link rel="stylesheet" href="/assets/css/styles.css">
    {% feed_meta %}
    {% seo %}
  </head>
  <body>
    {% include navigation.html %}
    {{ content }}
  </body>
</html>

重启您的 Jekyll 服务器,检查这些 Tag 是否添加到 <head>

环境

有些时候,您可能在生产环境需要输出一些东西,但在开发环境不需要。最常见的例子就是分析 脚本,就是这种用法。

要做到这些您需要使用环境。您可以通过运行命令 时使用 JEKYLL_ENV 环境变量来设定当前环境:

JEKYLL_ENV=production bundle exec jekyll build

默认的 JEKYLL_ENV 值为开发(development)环境。JEKYLL_ENV 值在 Liquid 中可以使用 jekyll.environment 获取。所以要想在只有产品环境时使用分析脚本可以这样:

{% if jekyll.environment == "production" %}
  <script src="my-analytics-script.js"></script>
{% endif %}

部署

最后一步是将站点部署到产品服务器。最基本的方式是运行产品构建:

JEKYLL_ENV=production bundle exec jekyll build

然后复制 _site 的内容到您的服务器。

站点构建时目标文件间会被清理

当站点构建时,_site 内容默认会被自动清理。站点构建处理中未创建的文件或者文件夹都会被移除。

需要保留的文件可以通过将它们在配置命令指定为 keep_files 来完成。其它需要保留的文件就是 assets 目录的文件了。

更好的方式是用 CI 或者第三方软件自动部署。

收工

在教程的最后将开始您的 Jekyll 之旅!