详细教程(分步骤)
10. Deployment:部署
- Setup:安装、创建和构建 Jekyll 的详细教程
- Liquid:模板语言
- Front Matter:页面头部参数
- Layouts:布局
- Includes:引入文件、包含文件、可复用片段、模板片段
- Data Files:数据文件
- Assets:资源文件(css、js、图片)
- Blogging:Jekyll 博客系统
- Collections:集合(专题页面、聚合页面)
- 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 站点中都非常有用:
- jekyll-sitemap - 创建一个站点地图文件,帮助搜索引擎索引内容
- jekyll-feed - 为你的帖子创建一个 RSS 源
- jekyll-seo-tag - 添加 meta 标签,帮助 SEO
要使用这些插件,首先需要将它们添加到你的 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-feed
和 jekyll-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
配置指令中指定它们,可以保留某些文件。其他文件可以通过将它们保留在你的资产目录中来保留。
总结
这标志着本教程的结束,也代表着你 Jekyll 之旅的开始!
- 来 Jekyll 社区论坛 跟大家打个招呼
- 通过 贡献 帮助 Jekyll 变得更好
- 继续构建 Jekyll 站点!