Typora 是一款广受欢迎的 Markdown 编辑器,它集成了 Mermaid 库,方便用户绘制各类基础图表,如流程图、甘特图、饼图等。然而,Typora 与 Mermaid 独立维护,这就导致 Typora 中集成的 Mermaid 版本可能并非最新,进而无法支持最新的图表类型和特性。比如在撰写本文时,截至 Mermaid 的最新版本 8.5.1 支持 ER 图,在 Markdown 中输入如下代码:
查看你的 typora 中的 mermaid 版本
1 | ```mermaid |
info
1 | erDiagram |
erDiagram CUSTOMER }|..|{ ORDER : places ORDER ||--|{ LINE-ITEM : contains CUSTOMER : id (PK)
可以用这个代码测试你的 mermaid 版本和 typora版本,在 0.9.86
及以前版本的 Typora 中,只展示空白图表,没有错误信息,报错信息为 Mermaid
语法解析失败。这正是因为 Typora 集成的 Mermaid
版本过低,当前版本集成的是 8.4.0 版本的 Mermaid,而此版本尚未支持 ER
图。这是截至文章编辑时,Mermaid最新版本 8.5.1
中所支持的一种图表
不过,通过一些简单操作,我们可以让 Typora 集成最新版本的 Mermaid。
Typora 本质上是由 js 实现的 Markdown 编辑器,Mermaid 也是通过 js 实现的图表库,Typora 以 js 引用的方式集成了 Mermaid。所以,要集成最新版本的 Mermaid,我们首先要下载 Mermaid 最新版本的 js 文件。
获取最新版本的 js 文件可以从 Mermaid 的官方 CDN 链接获取,你可以通过访问Mermaid 官方网站,在文档中找到最新版本的 js 文件链接。
也可以从https://cdn.jsdelivr.net/npm/mermaid@版本号
右键选择保存到本地进行下载

可以看到其中的mermaid.min.js就是我们需要的内容
我建议为 typora 搭载 9.3.0 版本的 mermaid,太高了好像还是不行
除了官方提供的CDN下载方式,通过其他渠道下载也可以。
接下来,我们要让 Typora 加载我们下载的最新版本的 js 文件。由于 Typora
通过window.html
文件来加载各类资源,我们需要对其进行修改。找到
Typora 的安装目录,不同操作系统下 Typora 的安装目录有所不同:
- 在 Windows 系统中,Typora
默认安装在
C:\Users\你的用户名\AppData\Local\Typora\
目录下。 - 在 Mac 系统中,Typora
安装在
/Applications/Typora.app/Contents/Resources/
目录下。 - 在 Linux
系统中,如果是通过包管理器安装,安装目录可能在
/usr/lib/typora/
。
找到安装目录后,进入resources
文件夹,再找到window.html
文件。在修改文件之前,强烈建议对window.html
文件进行备份,以防修改失误导致
Typora 无法正常使用。备份好文件后,使用文本编辑器(如 Notepad++、Sublime
Text
等)打开window.html
文件。在文件的``标签内,添加如下代码:
1 | <script> |
找了一段别人的
https://qzy.im/blog/2020/05/typora-integrate-the-latest-version-of-mermaid/
1 | <script> |
这段代码的作用是在 Typora 窗口打开后,定时检查自带的 Mermaid
是否已集成。若已集成,就通过 jQuery 从本地加载我们前面下载的 js
文件。注意,这里假设你将下载的mermaid.min.js
文件放在了与window.html
相同的目录下。如果放置在其他目录,需要修改$.getScript
中的路径为实际路径。
完成上述操作后,将下载的最新版本的mermaid.min.js
文件复制到window.html
所在的目录。此时再打开
Typora,插入 Mermaid 代码,查看 Mermaid
的版本,就可以看到已经成功替换成了最新版。可以通过在 Typora
中输入如下代码来查看版本:
sequenceDiagram Alice->>John: 你好吗? John-->>Alice: 我很好 Alice->>John: 今天天气不错 Note right of John: John思考中 John-->>Alice: 是的,很适合户外活动
1 | sequenceDiagram |
sequenceDiagram
Alice->>John: 你好吗?
John-->>Alice: 我很好
Alice->>John: 今天天气不错
Note right of John: John思考中
John-->>Alice: 是的,很适合户外活动
类图
classDiagram class Animal { +name: string +age: int +eat(): void +sleep(): void } class Dog { +breed: string +bark(): void } class Cat { +furColor: string +meow(): void } Animal <|-- Dog Animal <|-- Cat
1 | classDiagram |
classDiagram
class Animal {
+name: string
+age: int
+eat(): void
+sleep(): void
}
class Dog {
+breed: string
+bark(): void
}
class Cat {
+furColor: string
+meow(): void
}
Animal <|-- Dog
Animal <|-- Cat
甘特图
gantt title 项目开发计划 dateFormat YYYY-MM-DD section 设计阶段 需求分析 :a1, 2023-01-01, 30d 原型设计 :a2, after a1, 20d section 开发阶段 前端开发 :b1, 2023-02-20, 40d 后端开发 :b2, 2023-02-20, 50d section 测试阶段 单元测试 :c1, after b1, 15d 集成测试 :c2, after b2, 20d 系统测试 :c3, after c1, 15d
1 | gantt |
gantt
title 项目开发计划
dateFormat YYYY-MM-DD
section 设计阶段
需求分析 :a1, 2023-01-01, 30d
原型设计 :a2, after a1, 20d
section 开发阶段
前端开发 :b1, 2023-02-20, 40d
后端开发 :b2, 2023-02-20, 50d
section 测试阶段
单元测试 :c1, after b1, 15d
集成测试 :c2, after b2, 20d
系统测试 :c3, after c1, 15d
修改并保存 window.html
文件后,我们重新打开Typora,就发现问题场景示例中的ER图已经可以成功展示了
另外,如果你不想通过修改window.html
文件的方式来更新
Mermaid 版本,还可以使用一些第三方工具来实现。例如,在 Linux
系统下,可以按照以下步骤操作:
- 安装 asar 工具:asar 是一个用于处理 Electron
应用资源文件的工具,Typora 就是基于 Electron
开发的。在终端中输入命令
sudo npm install -g asar
来全局安装 asar 工具。安装过程中可能需要输入系统密码,按照提示操作即可。 - 下载 Mermaid 新版本:确定你想要下载的 Mermaid
版本,Mermaid 版本更新较快,可以在 Mermaid
官方网站查看最新版本信息。例如,若要下载 10.9.0
版本,在终端中输入命令
npm install mermaid@10.9.0
,这会在当前目录下创建一个node_modules
文件夹,并将 Mermaid 的 10.9.0 版本下载到该文件夹中。 - 解压 Typora 的 lib.asar 文件:Typora
的资源文件被打包在
lib.asar
文件中,我们需要解压它来替换其中的 Mermaid 文件。进入 Typora 的安装目录,在终端中输入命令asar extract lib.asar extracted
,这会在安装目录下创建一个名为extracted
的文件夹,里面包含了解压后的 Typora 资源文件。 - 替换新版 Mermaid 的 js
文件:进入
extracted\resources\app\lib\diagram
目录(不同版本路径可能略有差异),这里面有 Typora 自带的mermaid.min.js
文件。将我们前面下载的 Mermaid 新版本的mermaid.min.js
文件复制到这个目录,并覆盖原文件。为了以防万一,你可以先备份原文件,例如使用命令mv mermaid.min.js mermaid.min.js.bak
(在 Linux 系统下)。 - 修改 frame.js 接入 Mermaid
的文件路径:在
extracted\resources\app\renderer
目录下找到frame.js
文件,使用文本编辑器打开它。在文件中找到类似const n = path.join(app.getAppPath(), '.', 'lib', 'diagram','mermaid.min.js');
的语句,将其修改为const n = path.join(app.getAppPath(), 'lib', 'diagram','mermaid.min.js');
。这样修改后,Typora 就会默认使用我们替换后的lib
路径下的 Mermaid 文件。好处是后续如果想要使用更新版本的 Mermaid,直接替换lib/diagram
下的mermaid.min.js
文件即可。 - 重新打包 lib.asar
文件:完成上述修改后,需要将
extracted
文件夹重新打包回lib.asar
文件。在终端中,确保当前目录是 Typora 的安装目录,然后输入命令asar pack extracted lib.asar
。这会将修改后的资源文件重新打包成lib.asar
文件。 - 替换原 lib.asar
文件:备份原
lib.asar
文件,例如mv lib.asar lib.asar.old
,然后将新生成的lib.asar
文件移动到原来的位置。此时再打开 Typora,就会使用更新后的 Mermaid 版本了。
通过以上方法,无论是在 Windows、Mac 还是 Linux 系统下,都可以成功为 Typora 更换更新版本的 Mermaid,避免因版本过低导致图表无法加载或不支持新特性的问题,在 Typora 中更顺畅地使用 Mermaid 绘制各类图表。