本文讲的是hexo的插件hexo-filter-mermaid-diagrams
hexo-filter-mermaid-diagrams
1. 快速使用
- 安装
在博客的根目录下使用命令
| $ yarn add hexo-filter-mermaid-diagrams 或者 $ npm install hexo-filter-mermaid-diagrams
|
- 配置
配置hexo的配置文件_config.yml
| mermaid: enable: true version: "7.1.2" options:
|
- 在模版文件引入mermaid.js
在/themes/
里找到自己正在使用的主题的文件夹 ,打开里面的layout
文件夹,在里面找到一个在文章页面有被加载的模版文件(官方写的是after_footer
文件,我的主题没有)根据下面情况引入相应内容。
- 我的主题使用的是fluid就添加下面的代码到
/themes/fluid/layout/plugins/footer.ERB
, 如果是其他尾缀类型的模版例如pug
或swig
请去看官方文档
| <% if (theme.mermaid.enable) { %> <script src='https://unpkg.com/mermaid@<%= theme.mermaid.version %>/dist/mermaid.min.js'></script> <script> if (window.mermaid) { mermaid.initialize({theme: 'forest'}); } </script> <% } %>
|
添加完成后,回到博客根目录的_config.yml,把external_link的值改为false,默认的为true
2. 出现问题
- 没有效果
*记得hexo clean
原因:语法不一样,三个点后面填写mermaid
- 报错Error: <svg> attribute viewBox: Expected number, “0 0 -Infinity -Infin…”.
原因:主题的代码高亮样式冲突了。(主题版本为v1.7.4)
将主题的代码高亮关了就好了.
优化
在模版footer
文件引入mermaid.js的话会在博客的每个页面都加载这个文件,而我们往往并不是每个页面都会有用到这个插件。
- 把配置部分放到主题配置(
/themes/fluid/_config.yml
)里
| mermaid: enable: true specific: true
|
(就快速使用的第二步里的内容多了specific
来控制是否启动转换)
*如果不想放在主题配置里把第二步的theme.post
改成config
就好了
2. 在/themes/fluid/layout/_partial/plugins
新建mermaid.ERB
文件,内容如下
| <% if(theme.post.mermaid.enable && (!theme.post.mermaid.specific || (theme.post.mermaid.specific && page.mermaid))) { %> <%- js_ex(theme.static_prefix.mermaid, "mermaid.min.js") %> <script> if (window.mermaid) { mermaid.initialize({ theme: 'default' }); } </script> <% } %>
|
- 引入文件到
scripts.ERB
在/themes/fluid/layout/_partial/scripts.ERB
最下面添加
| <%- partial('_partial/plugins/mermaid.ERB') %>
|
- 最后在
_static_prefix.yml
添加cdn即可
在/themes/fluid/source/_static_prefix.yml
最下面添加
| mermaid: https://cdn.bootcss.com/mermaid/8.4.8/
|
*此处写死了版本号,想移到配置文件中请自行修改
总结
优化部分的代码还是蛮好懂的,照着本身自带的math进行修改即可。就是代码高亮部分导致的报错并无法显示耗费了许多时间。下次遇到问题先在github的Issues里看看。