这几天折腾了一下 Jekyll,很不紧跟潮流,我知道,但是我并没有想换博客系统,所以本来都不打算折腾的,实在是机缘巧合。
起因是去年我为了照顾孩子而辞职,开始兼职做补习老师。作为个人品牌的一部分,我做了一个讲解化学知识的小博客。这个博客需要输入很多化学式,而大部分成熟博客平台的编辑器对这个需求的支持并不是很好,所以我自己写了一个。
今年我去了大学做实验室技术员,有了些空闲时间,于是就想着把这个编辑器独立出来。
可是编辑器是有了,用它写出来的博文放去哪里又成了问题。于是我就想到了 GitHub pages,免费,简单,支持 Markdown,对我的编辑器来说可以直接保存 .md 文件,上传就可以了。所以才折腾一下 Jekyll。
我没有在本地搭建 Jekyll 环境,而是完全依赖 GitHub pages 的自带 Jekyll。所以开始有点不得其法,研究一下才知道怎么用。
按照我的不专业的看法,Jekyll 其实是一个 .md 到 .html 的转换器,只是在转换的时候,会使用模版,也就是 themes,同时会生成一些有关博客页面的变量可供使用。
可以在本地使用 Jekyll 生成 html 文件后上传到服务器,再用 nginx / Apache 之类的展示出来。或者也可以直接把没有转换的 .md 文件上传到 GitHub pages,使用内建的 Jekyll 进行转换再展示,等于 GitHub 把生成 html 和展示 html 两步给做完了。
Jekyll 的主题,或者说模版,是可以用远程的源的,不需要下载到自己的博客目录下,Jekyll,包括 GitHub pages 的自带 Jekyll,在生成 html 文件时,可以自动从指定的主题的仓库里加载源文件。而且如果本地有同样位置的同名文件,又会自动用本地的文件替代源文件。这点很智能。
但是要想让 Jekyll 生成网站,文件的位置就需要按照 Jekyll 的规定。比如博客文章(post)需要放在 _post
目录,而图片则要放在其他的目录,因此在 .md 文件里图片的地址也需要做相应的调整。如果把 post 放在其他目录,虽然可以让图片和 .md 文件放在一起,但是 Jekyll 会把它们归类为页面(page),而不是文章。所以博客的目录结构要自己琢磨,一旦定下来就不好再更改,会影响对图片的加载。
当然可以有更进阶的方法,比如图片地址的重定向,但是如果只是想最简单的开通 GitHub pages,上传文件,就搞定网站架设的话,就需要考虑清楚图片地址了。
所以最终我选择了用我的编辑器导出一个压缩文件,里面包含了 .md 文件和用到的图片,解压以后整个目录传到 Github pages 的 post
目录下,并改名为日期,而 .md 文件的文件名根据文章修改,作为 slug,所以 Jekyll 会生成 /post/YYYY-mm-dd/slug.html
的网页,图片也可以直接用 ./image_filename.jpg
来加载显示。唯一的不足就是这些文章会被定义为 page,而不是 post。
不过折腾完以后我还是继续用 WordPress,并不想迁移了。