迁移博客园到 Hexo + EdgeOne 与 Cloudflare 之旅

迁移博客园到 Hexo + EdgeOne 与 Cloudflare 之旅

迁移博客园到 Hexo + EdgeOne 与 Cloudflare 之旅
二次蓝 Lv4

前言

本来我的博客是一直放在博客园的,seo 不错,平时也不咋打理。这几天为了解决某网站的加载速度,了解到国内外分流,就想拿博客来尝试一下。

毕竟我刚好有备案域名,那么使用白嫖 EdgeOne、Cloudflare,测试分流那也是顺手的事。

  • 不备案的域名也是可以国内访问的,但是不支持使用 EdgeOne,只能用 Cloudflare 全球加速。国内访问稍微慢一点。
  • EdgeOne 国内访问速度较好,国内访问需要备案域名,没有的话只能国际加速。有备案也可以直接使用全球加速,但是国外速度逊色于 Cloudflare。

部署

我的使用环境:Windwos、VSCode、pnpm、Typora

Hexo 部署网上文章泛滥成灾了,可以自行查找。EdgeOne 的部署也大差不差,同样是绑定项目、触发部署、自定义域名,本文着重写自己的迁移、问题解决。

  1. 初始化 git 仓库,install hexo -> init -> install theme -> hexo s 本地预览,莫得问题。

  2. 轻车熟路,创建 pages,推送初始版本触发部署,访问,莫得问题。
    部署构建/编译命令可以直接使用 pnpm build,内部就是 hexo generate,构建输出/输出目录就是 public 目录。

    因为一些原因(见后文:遇到的问题),我后续不再在 pages 上自动编译了,直接上传编译产物。

感觉有点 49 年入*军的感觉,好多 Hexo 插件都不维护了😂,包括 Hexo 自身的官方插件。

迁移数据

发现博客园本身自带备份功能,于是下载备份文件查看了一下,可以写代码操作一下。

使用迁移工具生成 Hexo Markdown 文件并替换

-> CNBlogs 转 Hexo/Markdown 工具

优化 Markdown 文档格式

这不是必做项,见:迁移之旅2:格式化 Markdown 文档

配置 Hexo

Hexo 插件很多,但是 Hexo 的插件页面比较简略,探索的时候不太容易,因为里面夹杂很多过时的插件。

写了个油猴插件帮忙:Hexo.io 插件页面增强:star数、更新时间,更方便找到那些实用、比较新的插件。

使用的插件:

  • hexo-analytics:用户行为分析,查看用户来源,钟爱哪篇文章,哪些工具等。不认识这种的,可以忽略。

  • hexo-asset-pro:解决 Typora 与 Hexo 的图片处理问题,比 hexo-image-link 更好用,没有额外日志,而且可以识别 ./ 开头的路径(个人喜欢在 Typora 配置为相对路径添加 ./,确保相对、绝对路径区别明显)

  • hexo-seo: 生成 sitemap.xml 以及格式化数据 ld-json。不是很完善,而且生成的 sitemap 是不支持国内的百度搜索引擎的。后面再处理,打算百度使用 API 主动提交链接。

    • 好消息,提 issue,作者添加了 sitemap.txt 支持
  • hexo-yam:压缩代码,加快网站访问速度,减少流量消耗。配置简单,还可以压缩打包:gzip、brotli 和 zstd
    当然,博主是托管到 pages 平台,并不需要最后面这一步 cdn 会帮我们做。

待使用的:

遇到的问题

hexo-all-minifier 压缩 jpg 报错:/vendor/cjpeg -baseline

开启全部压缩,在压缩 jpg 时会报错:

1
...mozjpeg/vendor/cjpeg -baseline 03:35:12.229 spawn /tmp/repo/my-blog-2mxf9gqru6/node_modules/.pnpm/mozjpeg@7.1.1/node_modules/mozjpeg/vendor/cjpeg enoent

差不多是这个错误,文章是后写的,错误是从浏览器历史记录找的蛛丝马迹

搜到:Error when installing mozjpeg - mozjpeg/vendor/cjpeg ENOENT #69,按照别人的评论,大概是平台缺少依赖项。

修改一下配置,直接跳过 jpg 的压缩:

1
2
3
4
5
6
7
8
9
10
all_minifier:
enable: true

image:
enable: true
options:
ignore:
# 这些压缩在云平台上有问题,跳过
- '**/*.jpg'
- '**/*.jpeg'

不建议使用 hexo-all-minifier 插件太老旧,已经不维护了。博主已经改为使用 hexo-yam。

nodejieba 开启推荐文章报错:cannot find module

我使用的主题的“推荐文章”功能使用的 nodejieba,它无法在云端运行,会报错:

1
error: cannot find module '/tmp/repo/my-blog-lyg90raoih/node_modules/.pnpm/nodejieba@3.4.4/node_modules/nodejieba/build/release/nodejieba.node'

因为这些托管平台都不支持运行这些库的编译脚本,最后决定在本地编译完博客代码,直接推送构建产物到仓库。

在 .gitignore 里注释或删掉 public 行,每次推送仓库时,手动 hexo g 生成产物,再把产物一并推送到仓库。

部署产物

部署产物,可以开分支或仓库,只单独同步构建产物。
我嫌麻烦,就把代码、产物一并同步、部署了

此时,EdgeOne 上可以把编译命令置空,但是安装命令可以设为 echo skipped,不然它默认还会调用 npm install,浪费部署时间。

迁移博客园到 Hexo + EdgeOne 与 Cloudflare 之旅
  • 标题: 迁移博客园到 Hexo + EdgeOne 与 Cloudflare 之旅
  • 作者: 二次蓝
  • 创建于 : 2025-07-16 23:22:48
  • 更新于 : 2025-07-20 17:14:01
  • 链接: https://blog.ercilan.cn/2025/07/16/迁移博客园到 Hexo + EdgeOne 与 Cloudflare 之旅/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论