Typecho 转 hugo,享受白嫖的快乐
2021-07-10
因为最近工作比较忙(实际上是我太懒了),好久没更新博客,每当收到 vps 商家的催收账单时,都好像在提醒我,你怎么还不更新博客啊!!仔细想想一个博客应该以内容为主,不需要太多华而不实的功能,于是干脆换成静态博客,托管到第三方平台上,不用自己花钱租服务器(白嫖它不香吗🤟),不用自己维护服务器,不用担心被爆破,静态博客用git做版本控制也方便,最终决定使用hugo生成静态网站,托管到cloudflare pages,博客源码直接放github上,只要有commit,cloudflare pages就会自动构建网站,用起来还行,最后顺便把域名也给换了,已经是第4次换域名了,这大概是最后一次换域名了吧?😂
Typecho 文章转 hugo 文章
在 Typecho 博客上安装这个Typecho-export-hugo插件,然后登陆后台选择导出Hugo即可。
使用 Hugo 生成静态博客
参考 Hugo 官方文档的Quick Start把 Hugo 博客建好,然后把之前导出的文章全部放进 content/post文件下。
将 Hugo 静态博客 push 到Github远程 repository 中
在 blog
根目录下初始化 repository ,添加好 Github 的远程 repository ,使用 git push
将本地 repository 推送到Github远程 repository 中。
Note:git 的详细使用方法请参考 Pro Git book
登陆 Cloudflare Pages,创建项目与Github连接
在Cloudflare Pages登陆后,点击创建项目,按照操作指示即可将博客部署到 Cloudflare Pages 上,会给一个二级域名 项目名.pages.dev
,访问这个域名就可以看到你的博客啦。
自定义域名
如果有自己的域名,那就在“自定义域”设置中按照操作提示把域名添加上。
给博客添加评论系统
在群友liolok的推荐下,我选择使用giscus评论系统,该评论系统利用 GitHub Discussions 来构建,要有 Github 帐号才能评论,意想不到的效果就是可以防一些bot在评论区刷广告?(因为之前用 Typecho老是有bot在评论区刷垃圾信息)
建立 Github repository 与 giscus 连接
首先在 Github 上建立一个 repository (使用已有的 repository 也行), repository 需要满足 3 个要求:
- repository 必须是公开的,否则访问者将无法查看讨论。
- giscus 应用程序安装在 repository 上,否则访问者将无法做出评论和反应。
- 必须开启 Discussions 功能,启用方法详见Enabling or disabling GitHub Discussions for a repository
配置参数,放置<script>
tag
在giscus页面配置基本参数,把最后生成的<script>
tag放到博客模板对应的地方即可。比如:
我使用的是 Even 主题,评论系统的模板是主题文件夹下的layouts/partials/comments.html
,不推荐直接更改这个文件,应该把文件复制到博客根目录对应的文件夹下,在文件中添加 <script>
:
{{- if .Site.Params.giscus.enable -}}
<script src="https://giscus.app/client.js"
data-repo="{{ .Site.Params.giscus.data_repo }}"
data-repo-id="{{ .Site.Params.giscus.data_repo_id }}"
data-category="{{ .Site.Params.giscus.data_category }}"
data-category-id="{{ .Site.Params.giscus.data_category_id }}"
data-mapping="{{ .Site.Params.giscus.data_mapping }}"
data-reactions-enabled="{{ .Site.Params.giscus.data_reactions_enabled }}"
data-emit-metadata="{{ .Site.Params.giscus.data_emit_metadata }}"
data-theme="{{ .Site.Params.giscus.data_theme }}"
crossorigin="{{ .Site.Params.giscus.crossorigin }}"
async>
</script>
{{- end}}
接下里在 config.toml
中添加相应的参数:
# giscus(comments system)
[params.giscus]
enable = true
data_repo="[ENTER REPO HERE]"
data_repo_id="[ENTER REPO ID HERE]"
data_category="[ENTER CATEGORY NAME HERE]"
data_category_id="[ENTER CATEGORY ID HERE]"
data_mapping="url"
data_reactions_enabled="1"
data_emit_metadata="0"
data_theme="light"
crossorigin="anonymous"
以后要更新参数的话就可以直接在config.toml
中改,不需要动模板。
配置过程中应注意的问题
- 添加主题时请使用
git submodule add
方式添加,如果使用git clone
方式的话,Cloudflare Pages 在构建时到“正在克隆 Git 存储库”时就会失败(Failed: an internal error occurred
)。 - 因为 Cloudflare Pages 的默认构建环境Hugo版本较旧,建议在 Cloudflare Pages 构建时,添加
HUGO_VERSION
变量,值就设置成与本地的Hugo版本一样。