跳至主要內容

简化为mini版本

LincZero大约 2 分钟

简化为mini版本

在 AnyBlock V3.0.5 版本中,插件的默认大小足有 8.8MB,这很大。主要是因为其内置了一些比较大的库。像mermaid和markmap处理器分别让插件多占了 7.1 和 1.3 MB。而有很多不用的库可以进行去除,也可以进行一些优化以减少大小。

减少不需要使用的处理器

在源代码的 /src/README.md 中,我们知道了如何将源代码重新编译成插件所需要的 main.js 等文件。

这里我们说下如何减少插件体积。

打开 /src/ABConverter/index.ts 文件,我们可以看到:

// 转换器模块
export { ABConvertManager } from "./ABConvertManager"
// 加载所有转换器 (都是可选的,可自行增删。当然,如果A转换器依赖B转换器,那么你导入A必然导入B)
export {} from "./converter/abc_text"
export {} from "./converter/abc_list"
export {} from "./converter/abc_c2list"
export {} from "./converter/abc_table"
export {} from "./converter/abc_dir_tree"
export {} from "./converter/abc_deco"
export {} from "./converter/abc_ex"
export {} from "./converter/abc_mdit_container"
export {} from "./converter/abc_plantuml" // 可选建议:156.3KB。由于在线渲染,相对下面两个没那么高
export {} from "./converter/abc_mermaid"  // 可选建议:7.1MB
export {} from "./converter/abc_markmap"  // 可选建议:1.3MB

假如你不需要使用这两个功能,你可以把对应的两行代码注释掉,并重新编译。重新编译后的插件大小只有200KB左右,迷你了很多!

同理,如果你不需要插件的其他功能,也可以进一步缩小。反之,你也可以反过来操作,扩展一些新的处理器。

将内置mermaid改为ob mermaid

Q:关于为什么要内置mermaid,ob本身不是有吗? A:因为我做这个插件的时候,ob内置的mermaid版本非常老旧,像mermaid markmap的一些功能是不具备。二是因为内置的情况下,渲染速度会更快上一些。

Q:那现在新版本ob的mermaid已经比较新了,markmap功能也内置了。我是否可以在不减少mermaid功能的前提下,去除内置mermaid的情况下依然能够使用对应的功能 A:可以,但需要自己修改一下相关代码。比如将mermaid的行为重定位为在外面套一层代码块被交回给Obsidian进行渲染。具体方法如下:

abc_mermiad.ts 文件做以下修改:

  1. 注释掉:
    import mermaid from "mermaid"
    import mindmap from '@mermaid-js/mermaid-mindmap';
    const initialize = mermaid.registerExternalDiagrams([mindmap]);
    export const mermaid_init = async () => {
    
  2. render_mermaidText 方法中的方法一("自己渲")注释掉,将注释方法二("给环境渲")解除注释
  3. 然后重新编译就可以了