0%

Hexo博客配置升级集合

  • hexo博客配置优化升级的坑坑洼洼

  • 博客变动

    1
    2
    3
    4
    19.02.15 Next 启用 MathJax 公式支持
    19.04.03 博文按更新时间排序
    19.10.10 升级Next7.4, 修正评论Disqus.
    19.11.16 切换评论utterances

导语

  • 这一篇是折腾博客配置的集合贴.折腾多少记多少吧.

NEXT主题配置数学公式支持

编写数学公式

  • Next主题内置了对数学公式的支持,主要有 MathJax 和 Katex 两种.

  • MathJax 是一个JavaScript引擎,用来显示数学公式,支持大部分的主流浏览器,但毕竟是 JS 渲染,有一定的性能损失,目前大部分的数学公式都是基于 MathJax.

  • Katex 比 MathJax 快的多,即使禁用 JS 也可以正常渲染.但是支持的语法有限,等待进一步完善.

  • 这里还是选择了 MathJax .

  • 在Next7.4 中,不再需要复杂的配置.待续…

启用数学公式支持

  • 在主题配置文件 next/_config.yml 中 math 的 enable 选项改为 true,并选择MathJax:

    1
    2
    3
    4
    math:
    enable: true
    ...
    engine: mathjax
  • 正常显示数学公式还需要更换 hexo 的默认渲染引擎.

更换渲染引擎

  • hexo的默认渲染引擎与MathJax有语法冲突,故只能更换.可选有 hexo-renderer-pandochexo-renderer-kramed

  • hexo-renderer-pandoc 很好的照顾了 MathJax 语法,但是非常遗憾的是 Pandoc 和 markdown 的语法有一些不兼容,截至17年底之前的博文,没有按照 markdownlint 的标准来,都没有办法正常渲染.建议新博客可以选择 hexo-renderer-pandoc .

  • hexo-renderer-kramed 是基于hexo默认的渲染引擎小改,修补bug而来,因此很好的保持了兼容性.终于能正常渲染旧博文了.

  • 在hexo的文件夹下进入终端

    1
    2
    npm un hexo-renderer-marked --save
    npm i hexo-renderer-kramed --save
  • next/_config.yml 中将 math 的 enable 打开,并选择 mathjax 作为渲染引擎。

    1
    2
    3
    4
    5
    math:
    enable: true
    ...
    engine: mathjax
    #engine: katex

  • hexo-renderer-kramed 是很好解决了兼容性,但还是有一点瑕疵.Markdown 的 `` 行内程序代码 和 mathjax 的 $$ 行内公式,还是有冲突.有两种办法.

  • 直接使用 `$ $` 的语法进行,作者语.

  • 修改渲染器,解决冲突.

    • 找到hexo文件夹下\node_modules\kramed\lib\rules\inline.js

    • 第11行 escape 变量的值做相应的修改:

      1
      2
      //escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
      escape: /^\\([`*\[\]()#$+\-.!_>])/,hexo
    • 第20行的em

      1
      2
      //em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
      em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
  • 这样兼容性问题基本处理完毕.

  • 执行

    1
    2
    3
    hexo clean
    hexo g
    hexo s

    可以预览效果了

MathJax语法

vscode 预览 MathJax

  • 找这个支持费了好大经历,最后直接搜索vscode官方的插件库,第一个….
  • vscode 搜索安装 Markdown+Math 插件,即可在预览 MD 时,看到对应公式效果.不影响 markdownlint 的提示.
  • ps: 最新版的 vscode 插件安装完成后无需重启了.

博文按更新时间排序

  • 在升级 next6 后,添加了博文更新时间,但默认的排序还是博文的创建时间.

  • 其实在 hexo 内部 updated 参数是存在的,按照更新时间排序,只需要调整一下主配置文件 /Hexo/_config.yml

  • 添加

    1
    2
    3
    4
    index_generator:
    path: ''
    per_page: 10
    order_by: -updated

升级Next7

  • 想对于 Next6 , 7更多的是速度优化,UI 变化不大.另外就是 定制代码被统一到了/_data下.这样非常方便升级.

  • 速度加快非常明显: 博客搜索加载直接使用,不再需要等待.本地 hexo g 缩短了一半时间.

  • Next7的配置文件有更改.也许还有其他小BUG.因为定制代码被移动到了/_data下,之前的定制化暂时失效.

  • 目前 代码复制暂时失效,打赏暂时失效.

升级过程

  • 待续

utterances评论

  • Disqus 很久之前就被墙了,一直都是半残的使用这,期间查找了不少基于github issues 的评论系统,但是不是权限过大(这是github api限制),就是已经停止更新.

  • 最近翻到了 utterances 基于github app ,权限可以控制到某一个仓库.目前暂时迁移到 utterances .计划以后和域名一块,考虑在服务器上自建 isso,但是服务器的安全性又成新问题.

  • utterances 有新的插件 hexo-next-utteranc 部署异常的简单.

  • 选定仓库,授权 utterances .

    • 你可以新建,或者直接现有仓库.
    • 授权 ,可以控制到具体的仓库.