Ike MA & Abby Life Experience, Programming & Consumer Electrics

Jekyll 常用编译命令和参数

Jekyll是一个非常好的静态博客搭建平台,它的巨大优势就在于:你只需要一台Web服务器就可以搭建一个非常强大的静态博客,你可以最大程度的把重心放在博客的内容上,而不需要关心维护成本,也不需要考虑性能、数据库以及安全等等。同时你可以使用你熟悉的Markdown语言编写你的博客内容。
如果你还不了解Jekyll,你可以去官网(英文)了解,同时还有中文的官网

常用编译指令

下面的命令均在项目的根目录使用终端(Terminal)执行。

开发模式编译

jekyll build

开发模式编译并运行

bundle exec jekyll serve

开发模式编译(包含草稿)并运行

bundle exec jekyll serve --drafts

生产模式编译

JEKYLL_ENV=production jekyll build

编译配置文件

项目根目录的文件_config.yml中定义了编译需要的相关参数,在编译前需要有所了解。
下面是一个包含了所有参数和默认值的完整的配置文件,摘自官方文档
其中我总结了几个常用的参数和用法,请大家参考。

# Where things are 文件都存放在哪
source:       .
destination:  ./_site
plugins_dir:  _plugins
layouts_dir:  _layouts
data_dir:     _data
includes_dir: _includes
collections:
  posts:
    output:   true

# Handling Reading 阅读相关的参数
safe:                 false
include:              [".htaccess"]
exclude:              ["Gemfile", "Gemfile.lock", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"]
keep_files:           [".git", ".svn"]
encoding:             "utf-8"
markdown_ext:         "markdown,mkdown,mkdn,mkd,md"
strict_front_matter: false

# Filtering Content 内容过滤
show_drafts: null
limit_posts: 0
future:      false
unpublished: false

# Plugins 需要的插件
whitelist: []
plugins:   []

# Conversion 代码转换相关
markdown:    kramdown
highlighter: rouge
lsi:         false
excerpt_separator: "\n\n"
incremental: false

# Serving 服务器相关
detach:  false
port:    4000
host:    127.0.0.1
baseurl: "" # does not include hostname
show_dir_listing: false

# Outputting 输出相关
permalink:     date
paginate_path: /page:num
timezone:      null

quiet:    false
verbose:  false
defaults: []

liquid:
  error_mode: warn

# Markdown Processors MD语言处理器
rdiscount:
  extensions: []

redcarpet:
  extensions: []

kramdown:
  auto_ids:       true
  entity_output:  as_char
  toc_levels:     1..6
  smart_quotes:   lsquo,rsquo,ldquo,rdquo
  input:          GFM
  hard_wrap:      false
  footnote_nr:    1

baseurl参数

这个参数是指部署到生产服务器时,域名后面是否要包含子目录。这个参数体现在生成sitemap上。
例如你的网站主页如果是https://yoursite.com/extra/index.html,那么baseurl应维护为extra。
一般情况下,我们都留空。

host和port参数

这两个参数只在运行时有用,也就是说你用到serve命令生成服务器时生效。
这就是为什么生成服务器后,我们能通过http://127.0.0.1:4000访问。
如果你是通过FTP把_site目录下的文件上传到服务器的方式发布你的网站,那这两个参数只用于本机测试。对生产没有任何影响。

url参数

这个参数并没有体现在默认参数中,但对于生成sitemap来说非常关键。
在没有加url参数时,我发现sitemap里面的url都是相对目录,比如/index.html。这样会导致像Google Search Console通过你的sitemap提交网页url时报错。
实际上url指的就是你网站的域名。你可以维护成下面的形式:

url: "https://ikema.net"

这样你会发现sitemap中已经包含了你的域名。

timezone参数

你可以通过https://en.wikipedia.org/wiki/List_of_tz_database_time_zones查询你需要的时区。对于中国,可以维护成北京时间Asia/Shanghai

include参数

该参数指明了:
在项目根目录,哪些文件需要强制作为网站文件,被放到_site目录。
默认情况下,Jekyll默认会排除以.开头的文件,例如.htaccess文件,你需要将这些文件配置到include参数中,这样Jekyll在编译时会将这些文件拷贝到_site目录中。

exclude参数

这个参数指明哪些文件需要排除,不放在_site目录中。

keep_files参数

这个参数可以在输出目录(也就是_site目录)被清除时,指明哪些文件需要保留而不被删掉。一般情况我们也不需要在_site目录放什么东西。大可以用上面include参数放置文件。

Loading comments...