perf: init shikiji only when needed and limit langs

This commit is contained in:
Julien Calixte
2025-07-12 22:26:07 +02:00
parent 2ea1ec1587
commit dd5d4b04f7
3 changed files with 34 additions and 15 deletions

View File

@@ -21,6 +21,7 @@ import { encodeUTF8ToBase64 } from "@/utils/decodeBase64ToUTF8"
import { filenameToNoteTitle } from "@/utils/noteTitle"
import { generateTweets } from "@/utils/twitter"
import mermaid from "mermaid"
import { useShikiji } from "@/hooks/useMarkdown.hook"
const LinkedNotes = defineAsyncComponent(
() => import("@/components/LinkedNotes.vue"),
@@ -98,6 +99,10 @@ watch([content, mode], () => {
querySelector: `.note-${sha.value} .mermaid`,
})
}
if (rawContent.value.includes("```")) {
useShikiji()
}
})
})

View File

@@ -74,19 +74,34 @@ const md = new MarkdownIt({
})
.use(MarkdownItGitHubAlerts)
const useShikiji = async () => {
let shikijiInitialized = false
export const useShikiji = async () => {
if (shikijiInitialized) {
return
}
shikijiInitialized = true
md.use(
await Shikiji({
themes: {
light: "vitesse-light",
dark: "vitesse-black",
},
langs: [
"bash",
"javascript",
"typescript",
"markdown",
"mermaid",
"html",
"css",
"json",
],
}),
)
}
useShikiji()
mermaid.initialize({ startOnLoad: false, flowchart: { curve: "natural" } })
const rules: Renderer.RenderRuleRecord = {

23
src/shims-vue.d.ts vendored
View File

@@ -1,15 +1,14 @@
declare module '*.vue' {
import { defineComponent } from 'vue'
declare module "*.vue" {
import { defineComponent } from "vue"
const component: ReturnType<typeof defineComponent>
export default component
}
declare module 'pouchdb-adapter-indexeddb'
declare module '@toycode/markdown-it-class'
declare module 'markdown-it-block-embed'
declare module 'markdown-it-checkbox'
declare module 'markdown-it-footnote'
declare module 'markdown-it-regexp'
declare module 'markdown-it-iframe'
declare module 'markdown-it-shikiji'
declare module '@rushstack/eslint-patch/modern-module-resolution'
declare module 'pastel-color'
declare module "pouchdb-adapter-indexeddb"
declare module "@toycode/markdown-it-class"
declare module "markdown-it-block-embed"
declare module "markdown-it-checkbox"
declare module "markdown-it-footnote"
declare module "markdown-it-regexp"
declare module "markdown-it-iframe"
declare module "@rushstack/eslint-patch/modern-module-resolution"
declare module "pastel-color"