meows

Thank you for finding me in a corner of the world

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 个要求:

  1. repository 必须是公开的,否则访问者将无法查看讨论。
  2. giscus 应用程序安装在 repository 上,否则访问者将无法做出评论和反应。
  3. 必须开启 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中改,不需要动模板。

配置过程中应注意的问题

  1. 添加主题时请使用 git submodule add 方式添加,如果使用 git clone 方式的话,Cloudflare Pages 在构建时到“正在克隆 Git 存储库”时就会失败(Failed: an internal error occurred)。
  2. 因为 Cloudflare Pages 的默认构建环境Hugo版本较旧,建议在 Cloudflare Pages 构建时,添加HUGO_VERSION变量,值就设置成与本地的Hugo版本一样。