迁移到Cloudflare Pages

前言

这个Hexo原先是直接部署在Github Pages上的,但是Github Pages不允许免费用户使用私有repo,自定义域名要用4个A记录又太不优雅,又赶上最近Cloudflare免费服务白嫖上瘾,就直接把Hexo重新部署在Cloudflare Pages中了

简单几步完成部署

第一步:搞个repo

不要用.io的那个repo了,新建一个并设置为私有

把你的hexo传上去,当然是要用git push的方法

同时注意 / 里一定要有package.json文件(正常来说会有),里面的内容也要看一下,有没有定义好的scripts,例如:

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
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "hexo generate",
"clean": "hexo clean",
"deploy": "hexo deploy",
"server": "hexo server"
},
"hexo": {
"version": "6.3.0"
},
"dependencies": {
"@waline/hexo-next": "^3.0.1",
"hexo": "^6.3.0",
"hexo-deployer-git": "^3.0.0",
"hexo-generator-archive": "^2.0.0",
"hexo-generator-category": "^2.0.0",
"hexo-generator-feed": "^3.0.0",
"hexo-generator-index": "^3.0.0",
"hexo-generator-searchdb": "^1.4.1",
"hexo-generator-tag": "^2.0.0",
"hexo-renderer-ejs": "^2.0.0",
"hexo-renderer-marked": "^6.0.0",
"hexo-renderer-stylus": "^2.1.0",
"hexo-server": "^3.0.0",
"hexo-theme-next": "^8.15.0"
}
}

第二步:搞个Page

去Cloudflare的Worker & Pages页面新建一个应用,通过Connect to Git完成授权

接着进到最关键的配置环节,注意一下几个设置:

Key Value
Production branch main
Framework preset None
Build command npm run build
Build output directory /public
Build system version 2

这里要特别强调Build command这块

古早的Cloudflare Pages是可以在Framework preset里选择Hexo的,于是Build command可以直接设置为hexo g

后来Cloudflare Pages取消了Hexo的Framework preset,但是很多文档里依然通过hexo g可以正常生成页面

我不清楚是Cloudflare Pages有了新的变化,还是Hexo有了变化,当前环境中直接执行hexo命令是找不到文件的,必须要根据package.json中定义的scripts来执行npm run build才可以正常生成页面

第三步:定个域名

如果一切正常,你的hexo已经可以通过pages的域名访问了,这时候你可以把你自己的域名加进去

我相信你已经在用Cloudflare Pages的话,DNS肯定也在Cloudflare上,它会自动帮你处理CNAME记录和证书

So what?

折腾一圈下来,唯一解决的就是私有repo的问题

  • cloudflare的线路并不比github更快
  • 除非直接在github上写文字,否则还是需要本地操作
  • git使用比hexo还更复杂

就是脱了裤子放安静的屁