一直就想优化一下 Hexo 的代码高亮部分来着,对 ts、tsx 部分的支持一直不太好;也许直接更新 Next 就能直接解决,但博客部分已经魔改了不少,本着这个原则就继续魔改下去好了。本站是在 Next 5 的基础上建成的,不过本文内容与 Next 5 的关系不大
重写代码块的 render
我使用了 hexo-renderer-marked 插件,这个插件的作用就是将 Markdown 文件渲染成 HTML。
查阅文档,发现 hexo-renderer-marked 提供了扩展 marked 插件的功能,marked 是真正进行 Markdown 转换的工具。目前(hexo-renderer-marked@2.0.0 版本)暂未实现该功能,不过主分支上已经支持了,所以我暂时是直接使用了主分支上的代码。
package.json 中可以这么写:
不过在重写之前需要关闭默认的 highlight 功能,在根目录下 _config.yml 修改:
那么事情就简单了,在 scripts 下创建脚本,命名随意,我将其放在了 themes/next/scripts/daief/highlight.js:scripts 下的脚本会在 Hexo 运行时自动被加载,可在此实现一些自定义的插件等。
该脚本的功能就是使用 prismjs 来解析代码块,重写默认的行为。
添加样式文件
在主题配置文件(themes/next/_config.yml)下添加一个自定义选项 prismjs,这样一来版本的维护就比较方便了:
自己添加的东西最好跟库分开,Next 也已经考虑到了这一点,如果需要在每个页面的
中添加内容