工具链
我对 web 开发和 ruby 不熟悉,磕磕碰碰用下面的技术和工具把博客搭起来了:
- AsciiDoc
-
标准化的 markup 语言。和各家 markdown 不一样,它有标准化的工具链。
- AsciiDoctor
-
AsciiDoc 的参考实现。
- jekyll-asciidoc
-
jekyll 的 AsciiDoc 插件。通过它就能用 AsciiDoc 写网站了。
- jekyll-text-theme
-
一开始用的 minima 主题虽然开箱即用,但是这个主题的红色主题一下子让人有些亲近感。忍不住还是套用上了。
一些补丁
另外做了一些修改:
-
jekyll-asciidoc 没法支持一些插件。 至少用这个补丁是修好了。 测试的时候如果用自己本地的 jekyll-asciidoc 的话,需要参考 bundler 的文档, 让 bundler 用本地 repo,而不是 RubyGems 上的版本。这也是为什么我用 Gemfile 管理 jekyll 插件的原因。感觉这样更接近 Ruby 一些,方便理解 bundler 是如何找到插件的。
-
asciidoctor_cjk_breaks 是 asciidoctor 的扩展。因为有时候一句话太长了,就希望分成几行写。但是和英文不一样,中文的字和字之间一般是不加空格的,asciidoctor 看到 linebreak 就当成了空格处理,输出的 HTML 中行尾和行首中间就加了个空格。读者看起来就很变扭,所以这个扩展就把空格去掉了。这个问题在 asciidoctor 也有报告,但是还没得到解决。这个扩展很久以前写的,可能这两年没有更新,所以改了一下,让它能和比较新的 asciidoctor 2.x 一起用。
-
jekyll-TeXt-theme 自带的
archive.html
页面如果用 prettier 处理的话,它会报错。用上这个补丁就没问题了。
一些设置
-
CNAME:
-
配置 GitHub 让我的域名成为 canonical domainname
-
配置我的域名服务商加了 CNAME 指向 GitHub
-
-
GitHub Actions: 因为贪图用新的的 jekyll。GitHub Pages 提供的版本就有点旧了。所以用他家的 Actions 来做 CI,自动编译页面。用了下面几个 action
-
actions/checkout
-
ruby/setup-ruby
-
limjh16/jekyll-action-ts
-
peaceiris/actions-gh-pages
-
-
jekyll-TeXt-theme: 把它的配置抄了一堆。
-
CSS: rouge 的语法高亮在 jekyll-text-theme 中无法生效,因为后者没有定义一些 rouge 要的 CSS 规则。 所以从 minima 拷贝了一份
_syntax-highlighting.scss
然后按照个人喜好改了一下,放到了_sass/custom.scss
。网上也能找到好些好看的 rouge 语法高亮的主题。因为 rouge 高亮的 HTML 输出和 pygments 是兼容的,所以那些 pygments 的主题也可以拿来用。 其实之前并不知道应该用这个名字,只是觉得 text-theme 缺了这些定义,应该补上,是后来分析了它的assets/css/main.scss
,看着custom.scss
的名字,找到它,发现这是个空的文件。才猜测这是给用户自定义的一个 stub。
写作要注意的事项
多余的空格
加链接的时候,如果里面的文本是中文。通常我们不希望在链接前面有空格。所以只能用
这个行星上最大的link:https://github.com/[交友网站]
要是用
这个行星上最大的 https://github.com/[交友网站]
“交友网站”前面多了个空格。
常规维护
另外,如果以后要加个插件或者其他 ruby 包,先修改
Gemfile
,然后
sudo aptitude install ruby-bundler
bundle config mirror.https://rubygems.org https://mirrors.tuna.tsinghua.edu.cn/rubygems/
bundle install
就行了。