命令行参数

jekyll build:构建静态 html 文件

--watch         # 一直监听文件变化, 持续转换
<i href=""> 你好 </i>
jekyll serve    # 监听文件并持续生成 html, 运行一个  web 服务器在 http://localhost:4000
                # --no-watch        # 不监听文件变化
                # --livereload      # 在文件更新时自动刷新浏览器
                # --incremental     # 增量重建
                # --detach 脱离终端运行
                # --detach 和 其它两个共用的时候不能正常使用(原因未知)

jekyll serve:构建静态 html 文件,并建立一个 web 服务器

--drafts        # 启用服务时不忽略草稿
--no--watch     # 不监听文件变化
--livereload    # 在文件更新时自动刷新浏览器
--incremental   # 增量构建
--detach        # 程序脱离终端运行

note:
--detach 似乎不能和 --livereload,--incremental 一起好好工作
在命令前加 bundler exec,可以让命令运行在 Gemfile 指定的环境下

Liquid 语法

变量

不显示某篇文章:published: false

为文章指定地址:permalink: /address

tag

对于 tag, {{-{%- 相较于 {{{% 不会输出空行。

{% post_url filename %}:将文件名(不需要后缀)转为可访问的 URL
如果出现警告

Deprecation: A call to '{% post_url filename %}' did not match a post using the new matching method of checking name (path-date-slug) equality. Please make sure that you change this tag to match the post's name exactly.
  • 一个原因是需要在 filename 前加上路径 path (即 path-filename)即可消除警告。path 是项目根目录到文件的所有中间目录用 / 连接得到的字符串。这里的所有中间目录不包括 _posts 目录。path 最前面有没有 / 是不重要的。
  • 还有一种原因是 _posts 不是最后一个中间目录。换句话说,从根目录到文件的路径上只能有一个 _posts 目录且必须是文件的父目录。
    note官网里案例是搭配 {{ site.baseurl }} 使用,jekyll 3.8.5 实测不搭配也可以用。

{% link filename %}:将文件名(需要后缀)转为可访问的 URL
这个和 post_url 同样将文件名转为 URL。link 和 post_url 不同的是,post_url 是针对 _posts 下的文件的,而 link 对所有文件都可以。filename 需要是相对与项目根目录的路径,不可以省略任何目录,不可以省略后缀,第一个字符不能是 /。
note官网里提示说 v4.0 后可以不在前面加 {{ site.baseurl }},jekyll 3.8.5 实测可以不加。

配置过程中遇到的其它相关问题

打算使用 visual studio code 写 markdown,想自定义代码块,配置好了以后不生效。 需要在 settings.json 中加上下面的代码才可以生效。

    "[markdown]": {
        "editor.quickSuggestions": true,
    },

额外小知识

名词 解释
Ruby 一个脚本语言
gem 用 ruby 写的应用
RubyGems 库的管理工具,别名也叫做 gem
bundler 用于解决 Ruby 项目的依赖问题

参考资料

  1. Jekyll 英文文档
  2. Jekyll 中文文档
  3. Jekyll + Github Pages 博客搭建入门
  4. GitHub Pages 官方帮助文档
  5. Jekyll 常用变量
  6. Liquid reference