分步教程

10. 部署

在此最后一步,我们将让网站做好生产准备。

Gemfile

为你的网站准备一个 Gemfile 是一个好习惯。这可确保 Jekyll 和其他 gem 的版本在不同的环境中保持一致。

在根目录中创建一个 Gemfile。该文件应命名为“Gemfile”,应有任何扩展名。你可以使用 Bundler 创建一个 Gemfile,然后添加 jekyll gem

bundle init
bundle add jekyll

你的文件应类似于

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

gem "jekyll"

Bundler 安装 gem 并创建一个 Gemfile.lock,该文件锁定当前 gem 版本以供将来 bundle install 使用。如果你想更新 gem 版本,你可以运行 bundle update

使用 Gemfile 时,你将使用带前缀 bundle exec 的命令(例如 jekyll serve)。因此,完整命令为

bundle exec jekyll serve

这将限制你的 Ruby 环境仅使用 Gemfile 中设置的 gem。

注意:如果你使用 GitHub Pages 发布网站,你可以使用 github-pages gem(而不是 jekyll)来匹配生产版本的 Jekyll,方法是在 Gemfile 中使用它。在这种情况下,你可能还想从你的存储库中排除 Gemfile.lock,因为 GitHub Pages 会忽略该文件。

插件

Jekyll 插件允许你创建特定于你网站的自定义生成内容。有许多 插件 可用,你甚至可以编写自己的插件。

有三个官方插件几乎适用于任何 Jekyll 网站

要使用这些插件,首先需要将它们添加到你的 Gemfile 中。如果你将它们放在 jekyll_plugins 组中,它们将自动被 Jekyll 要求

source 'https://rubygems.org.cn'

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,你需要向 _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 服务器,并检查这些标签是否已添加到 <head> 中。

环境

有时你可能希望在生产环境中输出某些内容,但在开发环境中不输出。分析脚本就是最常见的示例。

要做到这一点,你可以使用 环境。你可以在运行命令时使用 JEKYLL_ENV 环境变量来设置环境。例如

JEKYLL_ENV=production bundle exec jekyll build

默认情况下,JEKYLL_ENV 为开发。你可以使用 jekyll.environment 在 Liquid 中使用 JEKYLL_ENV。因此,要仅在生产环境中输出分析脚本,你可以执行以下操作

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

部署

最后一步是将网站放到生产服务器上。最基本的做法是运行生产构建

JEKYLL_ENV=production bundle exec jekyll build

然后将 _site 的内容复制到你的服务器上。

在网站构建时会清理目标文件夹

在构建网站时,默认情况下会自动清理 _site 的内容。将由网站构建过程创建的文件或文件夹将被删除。

可以通过在 keep_files 配置指令中指定某些文件来保留这些文件。可以通过将其他文件保留在资产目录中来保留这些文件。

更好的方法是使用 CI第三方 自动化此过程。

总结

至此,本分步教程结束,您的 Jekyll 之旅即将开始!

  • 社区论坛打个招呼吧
  • 通过 贡献帮助我们改进 Jekyll
  • 继续构建 Jekyll 网站!
下一步
  1. 设置
  2. Liquid
  3. 前端信息
  4. 布局
  5. 包含
  6. 数据文件
  7. 资产
  8. 博客
  9. 集合
  10. 部署