QC2168 / vite-plugin-vitepress-auto-sidebar

The vite plugin that automatically generates sidebar data by scanning directories, based on vitepress
MIT License
96 stars 12 forks source link

Shiki 实例问题(一直更新) #35

Open labspc opened 3 hours ago

labspc commented 3 hours ago
[Shiki] 20 instances have been created. Shiki is supposed to be used as a singleton, consider refactoring your code to cache your highlighter instance; Or call highlighter.dispose() to release unused instances.

你所遇到的 Shiki 实例问题,可能是因为在 vite-plugin-vitepress-auto-sidebar 插件中每次生成侧边栏时,都调用了 Shiki 来为代码块生成高亮效果。如果 Shiki 每次都创建一个新实例,可能导致性能问题。

解决方案 检查插件源码:首先检查 vite-plugin-vitepress-auto-sidebar 插件源码,看是否有创建 Shiki 实例的部分。可以尝试找到类似 getHighlighter 或 shiki 的代码。

设置为单例:如果在插件内部确实创建了多个 Shiki 实例,可以考虑将其设为单例,在每次生成侧边栏时重用该实例。

重写插件:如果直接修改插件源码不方便,可以考虑创建一个插件的自定义包装器,用来管理 Shiki 实例的创建和销毁。以下是一个示例包装器实现:


个人不太懂 TS 不知道在哪里进行修改

labspc commented 3 hours ago

只要修改文章的标题,或者新增一篇文章,auto-sidebar 就会一直跑,只有重新启动 vitepress 才能解决问题