Hexo + Vercel 博客部署方案优化
经典前言
现在我的博客就是部署到 Vercel 上的,
最初选择 Vercel 是因为在 Github Pages
、Cloudflare
、Vercel
、Netlify
这四个较知名静态网站托管平台 中 Vercel 速度对于国内最快。
Vercel 的免费套餐也是足够的:单账户 100GB
数据传输/每月,1M
(百万)次边缘请求,1M
次边缘中间件调用… 详见 Vercel Pricing
… …
因为这几天才注意到博客文章的更新日期一直有问题,
我的博客在 Vercel
上是连接 Git
自动更新部署的,每次更新都会导致更新日期重置
… …
所以优化了下 Hexo
+ Vercel
的整站部署方案 =w=
当然不光解决更新日期的修复,还有其他东西,想到就更新吧
当前部署方案
先列出来主要部分:
- 博客框架:Hexo
- Git托管:Github
- 博客部署:Vercel
- RSS订阅部分:Cloudflare Pages
- 图床方案:Cloudflare R2 (相关文章)
Github -> Vercel 主站部署
之前因为是 Github 直接托管着 Hexo 的博客源码,
Vercel 需要配置环境生成博客静态文件后,再部署,就导致所有文章更新日期一直是部署时间。(需要的当然是每篇文章实际更新的时间)
这里通过配置 GitHub Action 实现通过 Github 编译生成 Hexo 静态文件到新分支,
在 Github 仓库新建 .github/workflows/deploy-static.yml 文件:
1 | # .github/workflows/deploy-static.yml |
这会在每次 git push
时自动编译 Hexo
静态文件到 static
分支。
如果不想每 push
一次就更新,也可以改为每日更新一次,把其中的 on 改为:
1 | on: |
不过现在还无法运行,需要在 **Settings - Actions - General **中下滑找到 Workflow permissions
设置权限为 读和写
。
设置完成后在 Actions
左侧选中 Deploy Hexo Static Files,手动触发编译。
接着改 Vercel
这里的配置,先把项目 Settings - Build and Deployment 中的框架设置改为 Other
,
在 Settings - Environments 修改生产分支为 static
。
接着要改 Hexo 项目内容,在根目录新建 vercel.json
,加入下面内容:
1 | { |
提交代码再次部署。
!更新:上面还不能实现修复更新日期,
这里再给项目额外安装 hexo-filter-date-from-git
插件:
1 | npm install hexo-filter-date-from-git --save |
然后在 _config.yml 中添加配置:
1 | # 使用 Git 历史来设置文章日期 |
这时候再更新文章就不会有更新日期的bug了。
RSS 订阅 | 节省 Vercel 流量
因为如果博客要支持 RSS
订阅 的话,是有一定流量耗费的,
这里通过 Cloudflare Pages 部署 RSS
订阅进行补充
(这里直接部署 Hexo
项目生成一个备用网站也是可以的)
Cloudflare
操作跟 Vercel
很像,之后在设置里修改如下内容:
这里的构建命令指在根目录下新建 feeds
目录,然后将根目录下的 rss.xml
和 atom.xml
转移到 feeds
文件夹:
1 | mkdir -p feeds && cp rss.xml feeds/ && cp atom.xml feeds/ |
可根据实际情况进行更改,
下面的生产分支则选择 Github 生成静态文件所在分支。
部署后就可以通过 域名/rss.xml
及 域名/atom.xml
访问了(域名为cf中设置的域名)
如果设置了 RSS
订阅按钮,可以更改为 Cloudflare 中部署的地址了。
如果想通过 主域名/rss.xml
就直接访问,可以设置页面重定向,跳转到 Cloudflare 页面。实现方法如 hexo-generator-redirect
插件,手动新建脚本等。
更多
待更新… …
有问题或错误欢迎评论区指出!
Hexo + Vercel 博客部署方案优化