20博客框架升级

前言

一年过去了,又有时间可以来升级博客框架了。但是一年肯定要比一年进步的。所以这次升级也花了不少精力,为以后快速升级铺垫道路。
再看去年的博客,发现NexT主题又换仓库了。这次仓库是next-theme。旧仓库只有V7的最后一个版本。
现在可以拥抱V8版本了,现在已经是V8.0.2。整个主题已经趋近成熟,因此没有太多的变化。

踩坑

这次才知道上次的hexo升级根本没成功,还在用3.X的版本,npm安装会在目录下生成一个package.json文件。要修改这个文件中的版本依赖,才会安装上最新版本的hexo。

升级完成之后,发现主题挂了,看来要连带升级主题才行。

比以前进步的是,这次我希望将配置分离做了。自从认真研读了Clash文档,感叹这才是现代程序应该有的样子。配置程序分离,配置尽可能的简单。配置中的内容可复用,从网络直接拉取配置文件,将自己不大关心的配置文件修改外包出去。这样配置内容就非常精简了。程序也使用Docker容器打包,加多一条配置指定版本的docker-compose.yml就OK了。

从NexT的官网文档得知,目前的主题配置文件分离方案,是在站点配置文件目录下创建_config.next.yml,文件默认会以覆盖写的方式加载到之前的主题中,这就很像Linux中的overlay了,这样可以做到读写分离。包括语言文件,也可以通过这种方式来改写。

所以整个迁移过程异常的顺利,为了减少对NexT主题的修改,所以这次就不改NexT源代码了。毕竟改源代码在维护,太累人了。

当然现在阿里云的OSS已经支持静态网站了,甚至还有全球CDN加速功能。真香!

也同上次一样升级之后发现,语法高亮挂了,因为以前我没有在Markdown代码中填写代码语言的习惯。而自动语法高亮功能貌似不能用了。所以回头把所有博客的代码语言给加了上去。顺便发现现在写的代码少了,写的配置倒是多了。

来自主题作者的踩坑

升级框架前必读,不然不知道又会挂了些什么功能。
【必读】更新说明及常见问题

Github Action

这次顺便也把之前的Travis CI给换下来了,毕竟Github亲生的,肯定要比第三方要香。而且发现Github Action挺好用的,充分做好了代码复用。

下面是Github Action,当blog分支有push的时候自动部署博客到同仓库的Github Pages并上传到阿里云OSS,配置文件代码。

.github/workflows/deploy.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
name: Hexo Deploy

on:
push:
branches:
- blog

jobs:
build:
runs-on: ubuntu-18.04

steps:
- name: Setup timezone
uses: zcong1993/setup-timezone@master
with:
timezone: Asia/Shanghai

- name: Checkout source
uses: actions/checkout@v2

- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: '12'

- name: Setup Hexo
env:
ACTION_DEPLOY_KEY: ${{ secrets.HEXO_DEPLOY_PRI }}
run: |
mkdir -p ~/.ssh/
echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.email "<email>"
git config --global user.name "<username>"
npm install hexo-cli -g
npm install
rm -rf node_modules && npm install --force
- name: Deploy
run: |
hexo clean
hexo g
hexo d

- name: Setup ossutil
uses: manyuanrong/setup-ossutil@v2.0
with:
endpoint: "oss-cn-hongkong.aliyuncs.com"
access-key-id: ${{ secrets.ACCESS_KEY_ID }}
access-key-secret: ${{ secrets.ACCESS_KEY_SECRET }}

- name: Deply To OSS
run: |
ossutil rm -rf oss://<bucket>/
ossutil cp -rf public oss://<bucket>/

- name: Sending message
uses: yakumioto/serverchan-action@v1
with:
key: ${{ secrets.sckey }}
text: 博客部署成功
desp: 博客部署成功

功能变更

  • 删除了文章中底部的知识共享许可协议
  • 删除了花里胡哨的动画功能
  • 去除了页面变宽以及文章半透明效果
  • 增添了豆瓣观影 阅读功能显示
  • 个人社交页仅显示图标
  • 修改高亮配色

参考链接

Hexo博客中加入豆瓣读书功能

Hexo 搭建个人博客系列:写作技巧篇