详细教程(分步骤)

10. Deployment:部署

Next
  1. Setup:安装、创建和构建 Jekyll 的详细教程
  2. Liquid:模板语言
  3. Front Matter:页面头部参数
  4. Layouts:布局
  5. Includes:引入文件、包含文件、可复用片段、模板片段
  6. Data Files:数据文件
  7. Assets:资源文件(css、js、图片)
  8. Blogging:Jekyll 博客系统
  9. Collections:集合(专题页面、聚合页面)
  10. Deployment:部署

在最后一步中,我们将使网站准备好进行生产部署。

Gemfile(gems清单)

为你的站点使用 Gemfile 是一个良好的实践。 这可以确保 Jekyll 和其他 gem 的版本在不同环境中保持一致。

在根目录创建一个 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。

注意:如果你使用 GitHub Pages 发布你的站点,可以在 Gemfile 中使用 github-pages gem 而不是 jekyll 来匹配生产环境中的 Jekyll 版本。在这种情况下,你可能还需要将 Gemfile.lock 排除在你的代码库之外,因为 GitHub Pages 会忽略这个文件。

插件 Plugins

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

有三个官方插件几乎在所有 Jekyll 站点中都非常有用:

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

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,你需要在 _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> 中。

环境 Environments

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

为此,你可以使用 环境 environments。你可以通过在运行命令时使用 JEKYLL_ENV 环境变量来设置环境。例如:

JEKYLL_ENV=production bundle exec jekyll build

默认情况下,JEKYLL_ENV 是 development。你可以在 liquid 中使用 jekyll.environment 来获取 JEKYLL_ENV 的值。因此,要仅在生产环境中输出分析脚本,你可以这样做:

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

部署 Deployment

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

JEKYLL_ENV=production bundle exec jekyll build

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

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

默认情况下,在站点构建时,`_site` 目录中的内容会被自动清理。站点构建过程中未创建的文件或文件夹会被删除。

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

更好的方式是使用 CI第三方服务 来自动化这个过程。

总结

这标志着本教程的结束,也代表着你 Jekyll 之旅的开始!

Next
  1. Setup:安装、创建和构建 Jekyll 的详细教程
  2. Liquid:模板语言
  3. Front Matter:页面头部参数
  4. Layouts:布局
  5. Includes:引入文件、包含文件、可复用片段、模板片段
  6. Data Files:数据文件
  7. Assets:资源文件(css、js、图片)
  8. Blogging:Jekyll 博客系统
  9. Collections:集合(专题页面、聚合页面)
  10. Deployment:部署