之前试过自己写过原生博客,也试过各种博客技术,现在不想折腾了。对比了一下,感觉hugo+github pages 这种方法最省心,最合心意。趁有空,就陆续把这个搭起来,顺便把以前的一些文章也慢慢移到这里来。 希望这个博客能一直坚持一下去吧。 既然做博客迁移,顺便就把过程做个记录,利人利己。

迁移过程

首先要说明我是在Windows平台进行,虽然每个平台都差别不大,但遇到的问题可能不一样。
大致过程是先在本地用hugo生成博客目录,然后去找合眼缘的主题,通过hugo生成博客文章并编写,最后生成 静态网页,并上传到github

安装hugo

先下载hugo的二进制包,地址:https://github.com/gohugoio/hugo/releases
我当时下载的版本是v0.69.2
解压后就得到hugo.exe文件,之后通过这个程序进行各种生成。

建立博客项目

通过一下命令可以创建一个博客项目:

1
hugo.exe new site [project-name]

如果想项目名字是blog,那就如下输入:

1
hugo.exe new site blog

创建成功后,会生成一个blog目录,这就是项目的根目录
如果没有把hugo.exe放到path路径下,那我建议就直接把这个hugo.exe移到blog的根目录下吧, 因为之后的命令都在blog根目录下执行就好了。
项目目录个文件用途如下:

1
2
3
4
5
6
7
8
9
.
├── archetypes # 存放生成博客的模版
├── assets # 存放被 Hugo Pipes 处理的文件
├── config # 存放 hugo 配置文件 支持 JSON YAML TOML 三种格式配置文件
├── content # 存放 markdown 文件
├── data # 存放 Hugo 处理的数据
├── layouts # 存放布局文件
├── static # 存放静态文件 图片 CSS JS文件
└── themes # 存放主题

项目有了,但现在还不能看效果,需要有个主题。

添加主题

hugo的主题还是很丰富的,这也是选择它的其中一个原因。
hugo主题在这个网页能找到:https://themes.gohugo.io/
我选择了一个很多人都喜欢使用的主题 hugo-theme-even
主题的连接能在上面的网址找到,我这里也发一下https://codeload.github.com/olOwOlo/hugo-theme-even/zip/master
创建目录blog/themes/even,然后把压缩包的内容解压到这个目录。然后把blog/themes/even/exampleSite 目录的文件拷贝到根目录blog下,这操作是把主题的默认配置文件和示例文章放到项目中。

完善配置

现在可以在根目录执行如下命令,来在本地启动预览服务查看博客:

1
hugo.exe server

成功后,在浏览器打开 http://127.0.0.1:1313/ 就可以看到新建的博客了。
现在很多东西都是主题默认的,这时可以通过修改根目录下的config.toml配置文件来进行自定义配置。

遇到的问题

不能正确显示目录

当我如上面步骤打开博客查看时,发现文章的目录不能正常显示h1 h4 h5 h6标签,我查看主题作者的在线 demo是能正常显示的,然后我在主题Issues找到了原因,网址:https://github.com/olOwOlo/hugo-theme-even/issues/240
大致是说默认下,新版hugo默认如下配置:

1
2
3
4
5
[markup]
  [markup.tableOfContents]
    endLevel = 3
    ordered = false
    startLevel = 2

可以看到限制了目录只能2到3,那在config.toml添加如下配置,覆盖掉默认配置就好:

1
2
3
4
5
[markup]
  [markup.tableOfContents]
    endLevel = 6
    ordered = false
    startLevel = 1

添加文章

下一步开始正是写文章了,使用如下命令创建新文章:

1
hugo new post/blog1.md

命令将会在content/post创建文件blog1.md,现在我可以打开blog1.md进行文章的编写,如果 如上面步骤启动了hugo预览服务,那每次保存文件,网页都会刷新立即看到修改的效果非常方便。

生成静态页面

当文章写好后,就可以生成静态页面,为下一步上传静态页面到github做准备了。
使用如下命令生成静态页面,其中even是主题名:

1
hugo -t even

命令成功后,将会在根目录生成public文件夹,这就是静态网页的根目录。

发布到gihub pages

暂时我并没有把原生的文件也上传到github,只是把public里面的静态文件发布到github。
在github上添加新的repository,repository的命名规则需要是username.github.io, 如我的github用户名是lookat23,那repository就是lookat23.github.io。把上面生成的 public目录下所有文件提交到这个项目中。通过网址username.github.io就可以访问 刚刚生成的博客了。

参考