jekyll

因为我比较喜欢ruby,所以想用jekyll作为博客平台。然后因为在搞emacs所以想用org写文档,然后jekyll官方不支持,所以想自己搞个大大的插件,先从源码看起。

项目结构

组织架构

首先我们看到.github文件夹下的CODEOWNER,分了6个组

  • build组做核心渲染
  • ecosystem组做插件,我主要看这个咯
  • stability组做ci
  • documentation组写文档
  • windows组做windows
  • affinity team captions组基本就是大佬管管github配置文件

参数

cli他们自己写了一个库叫mercenary来管理命令行参数,这个具体我就不看了。。。就看看参数

  • source,s 源码地址,也就是项目地址
  • destination,d 目标地址,生成的markdown渲染html就到这里
  • safe安全模式
  • plugins_dir,p 插件地址
  • layouts_dir 布局地址
  • profile 个人介绍

初始化

exe里可以看到mercenary把命令封装的特别好,以至于我都不知道它是怎么跑起来的了,我觉得block里的是初始化,因为我看他最后p.subcommand还在找。

于是直接进入下一步,看lib里的jekyll.rb这个文件,这个里面一堆autoload,我就知道,直接看commands里的代码就对了。

命令

jekyll的命令还挺好看的,在commands里一眼就看的出来。

build

new和new_theme这种太傻了,没啥看的,然后干啥都得build,先看build。

build在 jekyll/commands/build.rb里,这个文件也是很简单的。init里啥也没有,然后process方法封装了一下就调了build方法。

然后转到site.process方法,这是个啥,我看不懂了,卡壳了。。。