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

前言
本来我的博客是一直放在博客园的,seo 不错,平时也不咋打理。这几天为了解决某网站的加载速度,了解到国内外分流,就想拿博客来尝试一下。
毕竟我刚好有备案域名,那么使用白嫖 EdgeOne、Cloudflare,测试分流那也是顺手的事。
- 不备案的域名也是可以国内访问的,但是不支持使用 EdgeOne,只能用 Cloudflare 全球加速。国内访问稍微慢一点。
- EdgeOne 国内访问速度较好,国内访问需要备案域名,没有的话只能国际加速。有备案也可以直接使用全球加速,但是国外速度逊色于 Cloudflare。
部署
我的使用环境:Windwos、VSCode、pnpm、Typora
Hexo 部署网上文章泛滥成灾了,可以自行查找。EdgeOne 的部署也大差不差,同样是绑定项目、触发部署、自定义域名,本文着重写自己的迁移、问题解决。
初始化 git 仓库,install hexo -> init -> install theme -> hexo s 本地预览,莫得问题。
轻车熟路,创建 pages,推送初始版本触发部署,访问,莫得问题。
部署构建/编译命令可以直接使用pnpm build
,内部就是hexo generate
,构建输出/输出目录就是public
目录。因为一些原因(见后文:遇到的问题),我后续不再在 pages 上自动编译了,直接上传编译产物。
感觉有点 49 年入*军的感觉,好多 Hexo 插件都不维护了😂,包括 Hexo 自身的官方插件。
迁移数据
发现博客园本身自带备份功能,于是下载备份文件查看了一下,可以写代码操作一下。
使用迁移工具生成 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-steam-games:添加 Steam 游戏库页面
遇到的问题
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 | all_minifier: |
不建议使用 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 之旅
- 作者: 二次蓝
- 创建于 : 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 进行许可。