用 Hexo 做个人博客已经很久了。最开始是在自己的 VPS 上面搭,但因为忘记了续费,VPS 上面的数据全部丢失,幸好在本地留存了一些 markdown 文件,才得以抢救回来。后来转战 GitHub Page,数据持久化的问题是解决了,但每次发表新内容的时候都要 hexo g 重新编译生成静态页面一次,再加上我自己不是前端程序员,一旦跨设备就需要一顿鼓捣 npm 才能正常编译。最近玩 RSSHub 的时候发现了 Vercel 这个好东西,解决了个人博客的各种痛点,终于可以把博客从 GitHub Page 上迁移出来了。
在此之前可以首先 hexo clean 清理 public/ 目录下的所有文件,因为已经不再需要自己手动生成,这件事已经交由 Vercel 来完成。只需要在 source/ 目录下准备好文章的 markdown 文件,并且将整个 Hexo 项目目录 git push 到 GitHub 上面,就已经完成了所有的代码工作。
通过 Oauth 授权 Vercel 访问自己的 GitHub 账号后,就可以在列表中选择个人博客对应的 repository。按照默认流程一路进行下去就可以部署完成了,build 的整个过程一般不会超过 1 分钟,而且全程由 Vercel 完成。其原理是 Vercel 从 GitHub 拉取代码后,使用指定的运行时执行 hexo s,并提供一个外部域名供流量进入。
对于这个外部域名,Vercel 还提供自定义域名的 HTTPS 证书签发。只需要将自定义域名 CNAME 指向 Vercel 提供的外部域名,Vercel 就可以快速签发自定义域名的 HTTPS 证书(比 acme.sh 还快)。
Vercel 最优秀的功能在于自动发布。Vercel 上可以指定一个生产环境分支,一旦这个分支发生改变,就会自动执行工作流,重新拉取代码,重新启动 Hexo,不需要使用额外的代码或者命令来完成更新操作。