方永、南天紫云

道亦有道

从Hugo迁移到Zola
2020年04月09日

花费近一个工作日的时间, Hugo迁移到了Zola, 麻烦在于path的修正、分页、单页,以下是一个简单的做迁移时的脚本:

import sys
import os
import re
from datetime import datetime


for dirname, _, filenames in os.walk(sys.argv[1]):
    for filename in filenames:
        filename = os.path.join(dirname, filename)
        block_sp = False
        title = None
        date_str = ''
        date  = None
        remain = ''
        with open(filename) as f:
            for i, l in enumerate(f.readlines()):
                if l == "+++\n":
                    if block_sp:
                        block_sp = False
                    else:
                        block_sp = True
                else:
                    if block_sp:
                        x = re.findall('title = "(.+)"', l)
                        if len(x) > 0:
                            title = x[0]
                        x = re.findall('date = "(.+)"', l)
                        if len(x) > 0:
                            date_str = x[0]
                            date = datetime.strptime(x[0], "%Y-%m-%dT%H:%M:%S+08:00")
                    else:
                        remain = remain + re.sub("{{<.*highlight.*>}}", "```", l).replace("<!--more-->", "<!-- more -->")

        if not date:
            continue
        path = date.strftime("%Y/%m/%d/") + title
        all = '+++\ntitle = "{}"\npath = "{}"\ndate = {}\n+++\n\n'.format(title, path, date_str) + remain
        with open(filename, 'w') as f:
            f.write(all)

使用的感受来说,Zola的设计相比Hugo更精细,结构更清晰,模板引擎Tera用起来更舒适,但也存在一些需要优化的细节, 看看Issues就知道很多功能值得期待。

WordPress迁移到Hugo, Hugo已用近5年,到现在,Hugo的功能已非常完善,使用者众多, 社区也不断壮大,在静态网站生成器排名中也名列前茅。Netlify提到JAMstack的概念,从十来年互联网的技术发展来说, 由静到动再到静,可以说是否定之否定。这其实是一种理念,比如说CMS,建站系统,如何应用JAMstack