我的博客堆栈和发布过程

我知道很多人有话要说:我会尽力鼓励他们写自己的博客。 我认为每个有兴趣的开发人员都应该这样做,并尽可能减少障碍。

但是,由于我无法理解的原因,Medium已成为首选的博客平台。 让我们面对现实吧,尽管该平台可以用于非技术性职位,但不适用于涉及代码和格式的主题。

除此之外,Medium还存在很大的问题。 如果您使用Medium,那么您基本上会将自己的内容交还给他们。

在这篇文章中,我想描述我的博客堆栈和发布过程,以使感兴趣的每个人都可以开始自己的博客之旅,或者迁移一个人的现有堆栈并保持对内容的控制。

到目前为止,以下堆栈非常适合我。 但是,这可能并不适合每种情况。 因此,我包括了一节,列出了一些可能更适应的点点滴滴。

基础

博客平台是Jekyll ,它是静态站点生成器 :从根本上讲,它读取以特定文件夹结构组织的Markdown文件,以生成HTML文件,这些HTML文件在构建时定义了最终的博客内容。 与动态网站(如WordPress)相比,它具有快速(简单HTML)和安全的优势(无需PHP或SQL注入)。

但是在某些情况下, 例如简单的布尔逻辑或编写发布日期,HTML文件是不够的。 为了管理动态内容,Jekyll集成了支持简单逻辑的Liquid标签。

Jekyll围绕插件架构构建,以自定义平台。 插件类型不同,具体取决于所需的自定义类型:

  • 生成器 :生成其他内容
  • 转换器 :将标记语言更改为另一种格式
  • 命令 :将子命令添加到jekyll可执行文件
  • 标签 :添加其他液体标签
  • 过滤器 :添加自定义液体过滤器
  • 挂钩 :扩展构建过程

插件是用Ruby编写的。 可以将需要共享(或设计为通用)的插件作为Gem安装,而自定义插件仅需要存储在特定的_scripts文件夹中。 例如,一个插件为站点生成sitemap.xml

要发布新帖子,过程如下:

  1. 在专用的_posts文件夹中创建一个新的Markdown文件
  2. 将其添加到版本控制系统中,然后将其推送
  3. 这应该触发构建,其中应包括:
    • HTML内容的生成
    • 将上述内容部署在Web服务器上,以使全世界都可以访问

有关静态网站的主要问题是如何让读者提供反馈-评论。 为了解决这个问题,有“服务即评论”提供程序。 Jekyll在本地集成了Disqus ,即广泛使用的CaaS

我的细节

在这些基础上,我实现了以下定制。

Asciidoctor文件格式

我总是发现Markdown非常有限。 当达到其极限时,人们总是可以退回到原始HTML,但是随后人们倾向于编写大量HTML。

我发现Asciidoctor格式更合适。 幸运的是,有一个专用的插件可以管理这种格式。 通过适当的配置,可以以Asciidoctor格式编写帖子。

PlantUML图

UML远不如大多数UML培训所声称的普遍。 但是,我仍然发现这是与利益相关者或读者进行交流的非常有用的方法。

我前一段时间发现了PlantUML :它允许使用自定义语法的简单文本文件描述UML图。 有可用在线版本以及Docker映像 。 关于Jekyll,集成是由另一个插件提供的。

主题化

Jekyll基于标准模板,带有专用的CSS类。 因此,Jekyll能够基于这些类提供主题。 大多数主题都是通过Ruby gem提供的。 更改主题只是安装gem和使用它的问题。

就我而言,我重新设计了Jekyll中可用的模板。 因此,这些主题宝石变得毫无用处了......但是我通过结合使用自定义CSS和现有CSS来打造自己的风格。

记录下来,Jekyll即开即用地与Sass集成。 这样可以减少创建自己的样式表的过程。

版本控制系统

首先从Jekyll开始,克隆GitHub存储库并对其进行自定义。 要跟踪更改,需要使用VCS 。 由于Jekyll最初是通过Git提供的,因此合理的后续措施是继续使用它。

Jekyll托管在GitHub上,但我选择使用GitLab,因为GitLab提供免费的无限私有存储库。 虽然我的博客内容可供所有人免费访问,但我更愿意将平台的内部运作留给我自己。

内容生成

我正在使用Jekyll撰写博客文章,还发布了我过去和将来的演讲 。 我还希望Google以结构化的方式对演讲进行索引和解析。 为此,可以使用schema.org微格式 。 为每个演讲复制粘贴相同的标签是不可行的。

为了自动化生成过程,我创建了一个生成器插件,该插件读取YAML数据以创建页面。 即使我不了解Ruby,也可以使用可用的文档和现有示例轻松创建插件 。 开发插件是自定义Jekyll实例的好方法。

缩小

Jekyll可以轻松配置为提供缩小功能:可以缩小生成HTML内容,包括JavaScript内容(如果有)。 但是,有一个警告:保留换行符,但换行符占可以安全删除的符号的很大一部分。 开箱即用的缩小功能仅适用于此。

要删除所有多余的字符,可以使用第三方插件:

使用yui-compressor和htmlcompressor的Jekyll HTML / XML / CSS / JS Minifier
-Jekyll粉碎机
https://github.com/digitalsparky/jekyll-minifier

它提供了许多缩小选项,包括删除换行符,压缩JSON等。

建造

jekyll命令用于生成HTML内容。 作为软件开发人员,我们应努力实现尽可能的自动化。 由于我的Jekyll源代码托管在GitLab上,因此使用GitLab CI来构建站点是合乎逻辑的。

感谢GitLab,该构建已集成在一起,因此对master分支的提交会自动触发它。

代管

生成网站后,有必要托管博客的内容。 幸运的是,GitLab提供了静态网站托管解决方案GitLab Pages

再次感谢GitLab,可以使用附加的发布步骤来配置构建文件。

这是我用作模板的配置:

variables:
  JEKYLL_ENV:production
  GIT_STRATEGY:fetch
  GIT_DEPTH:"3"

before_script:
  -cd /builds/nfrankel/nfrankel.gitlab.io

pages:
  stage:deploy
  script:bundle exec jekyll b -tV --config _config.yml,_config/_config_prod.yml -d public
  artifacts:
    expire_in:1 day
    paths:
     -public
  only:
    -master

其他自定义和改进

自定义域

默认情况下,该网站是gitlab.io的子域, http://<reponame>.gitlab.io 。 为了“营销”目的,最好使用自己的域名。 GitLab Pages允许在您拥有的域下( 例如 https://blog.frankel.ch/提供站点服务。 只需检查相关文档即可

快取

如上所述,静态站点比动态站点快得多。 但是,可以通过使用CDN来提高GitLab Pages的性能。 随着CDN的发展, Cloudflare可以在全球各地的边缘服务器上缓存大量内容。 这允许将内容存储在更接近每个用户的位置,并根据用户与GitLab服务器之间的距离来缩短响应时间。 锦上添花,Cloudflare的免费套餐提供了该功能。

可能的选择

如上所述,我所描述的内容非常适合我。 但是,可能还有其他选择可以考虑。 这些只是我知道的建议,绝不是详尽的清单。

科技类 备择方案 评论

Jekyll

Hugo

Based on Go

Flask

Based on Python

Asciidoctor

Markdown

As mentioned above, my preference goes to Asciidoctor as Markdown is much too limited IMHO

Git

What else?

GitLab

GitHub

I think GitHub has now a free option for private repos

BitBucket

If you’re already a user or are in love with Atlassian products

GitLab CI

Travis CI

Makes a lot of sense if you already are using GitHub

GitHub actions

Not battle-tested yet

GitLab Pages

GitHub Pages

Both seem to be equivalent based on my past experience

Cloudflare

Akamai

No free tier that I know of

结论

如果您想开始写博客,则没有理由使用一个平台来通过您的内容获利,而您一无所获。 写博客文章是很多工作,您至少可以期望得到的回报是对它的某种认可。 我希望这篇文章能激发您创建自己的博客,或将您现有的博客迁移到内容属于您的地方。

翻译自: https://blog.frankel.ch/my-blogging-stack-publishing-process/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值