Skip to content

Abrahum Link

Hexo迁徙至5.0

日前准备重新开始更新,结果安装的最新 node14 和 hexo 不兼容,虽然 hexo s 可以正常的渲染出预览画面,但是 hexo g 出来却是全部都是 0kb 的空文件。

后续虽然安装切换回 node12 以后,问题解决了,干脆就再度迁移到 hexo5.0 与 next 主题的最新版。

本身的迁移非常简单,重新初始化一个博客文件夹就是

cnpm install hexo-cli -g
hexo init <new folder>
cd <new folder>
cnpm install

然后把原博客的 themes 、 source 和 _config.yml 文件夹拷贝过去(注意不要把 package.json 文件也拷贝过去,里面是 node 的 package 信息),再把主题替换成新的社区版 next ,并进行一些配置,不再赘述,下面说一些官方文档没有说明的点(至少不是显而易见的文档)。

语言配置

最新的 next 主题配置里直接配置语言不会生效,需要删除 language 文件夹里的 default 文件才能是配置生效,配置的 zh-Hans 也变更为 zh-CN 了。

定制CSS

之前自己客制的一些 CSS 现在统一迁移到 source 的 _data 文件夹里,然后在 next 的配置文件里配置启用。 但是新的 next 的最大宽度有点宽,这一点没法使用外部 css 覆写,只能修改了主题的 source/css/_variables/Pisces.styl 文件里的宽度设置。

中文目录链接失效

百度之后发现是一个主题固有问题,有issue #1540

其他

新的 hexo 没有自带 hexo-deployer-git ,需要额外安装。 虽然官方文档说需要卸载 hexo-renderer-marked 更换为 hexo-renderer-pandoc 才能正常显示 MathJax ,但是目前貌似没有显示问题,倒是 MathJax2.7 更新到 3.1 以后很多式子需要更新一下(速度快了很多好评)。

2021/07/13 折腾Aplayer

网易自带的播放器莫名其妙失效了,使用 Aplayer 代替之,但是 Aplayer 的自动注入会破坏我原有的一些 js 文件,故需要做以下变更。

感谢MeteorVE在#44的回复

  1. 在 hexo config 那邊,如同這個 repo 的 readme 所寫,新增 asset_inject 這個選項。

    aplayer:
      asset_inject: false
    
  2. 再來我們必須自己引入 js 和 css 等檔案。 我原本在 hexo 3.x 版本 配上 next 7.1.1 版本 ,自動注入就能 work 了 現在升級了才發生這個問題,但是相對的,override 的功能也做得更完善。 以下方式是適用 "如果你是 next 最新版本主題" :

  3. 建立 blog資料夾/source/_data/head.swig _data 這個資料夾預設沒有,自己創。

  4. 在 /source/_data/next.yml 內 搜尋 head: source/_data/head.swig 將他取消註釋。 (註 : next.yml 這個配置又得講到 next 的資料分離功能,有點扯遠,但要麻煩自行去 next repo 看)

  5. 在 /head.swig 內放入以下內容

    <!-- require APlayer -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.css">
    <script src="https://cdn.jsdelivr.net/npm/aplayer/dist/APlayer.min.js"></script>
    <!-- require MetingJS -->
    <script src="https://cdn.jsdelivr.net/npm/meting@2.0.1/dist/Meting.min.js"></script>
    

如果你說,步驟 2 後面的東西都看不懂怎麼辦。 那也可以直接做 file inject,就是直接修改源碼 在 next 主題資料夾內,找 layout/_partials/head/head.swig 在最後面加入上面那份引入的區塊就可以了。

但是我在如此操作后并无效果,多次尝试后,使用生成在 assets 文件夹的文件链接代替之,解决问题(可能是 APlayer 和 Meting 的版本问题)。