From 291db2bb53710f84fbe74e4f31f28afb4e42f3d0 Mon Sep 17 00:00:00 2001 From: lindsayzhng Date: Tue, 3 Feb 2026 17:54:21 -0800 Subject: [PATCH 1/2] bundle shiki worker --- .../src/utils/shiki/worker-client.ts | 18 +++++++++---- packages/components/vite.config.ts | 27 ++++++++++++++++++- 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/packages/components/src/utils/shiki/worker-client.ts b/packages/components/src/utils/shiki/worker-client.ts index 969905c2..525d294f 100644 --- a/packages/components/src/utils/shiki/worker-client.ts +++ b/packages/components/src/utils/shiki/worker-client.ts @@ -18,11 +18,19 @@ function getShikiWorker(): ShikiWorkerInstance { if (instance) { return instance; } - const worker = new Worker(new URL("./worker.js", import.meta.url), { - type: "module", - }); - instance = wrap(worker); - return instance; + try { + const worker = new Worker(new URL("./worker.js", import.meta.url), { + type: "module", + }); + instance = wrap(worker); + return instance; + } catch (error) { + console.warn( + "@mintlify/components: Shiki worker unavailable, using synchronous highlighting", + error + ); + return undefined; + } } export { getShikiWorker }; diff --git a/packages/components/vite.config.ts b/packages/components/vite.config.ts index 5c620c2f..8e91a37e 100644 --- a/packages/components/vite.config.ts +++ b/packages/components/vite.config.ts @@ -1,9 +1,26 @@ import { resolve } from "node:path"; import tailwindcss from "@tailwindcss/vite"; import react from "@vitejs/plugin-react"; -import { defineConfig } from "vite"; +import { defineConfig, type Plugin } from "vite"; import dts from "vite-plugin-dts"; +function relativeWorkerPlugin(): Plugin { + return { + name: "relative-worker-path", + enforce: "post", + generateBundle(_options, bundle) { + for (const [fileName, chunk] of Object.entries(bundle)) { + if (chunk.type === "chunk" && fileName.includes("worker-client")) { + chunk.code = chunk.code.replace( + /\/utils\/shiki\/worker\.js/g, + "./worker.js" + ); + } + } + }, + }; +} + export default defineConfig({ plugins: [ react(), @@ -18,6 +35,7 @@ export default defineConfig({ outDir: "dist", rollupTypes: false, }), + relativeWorkerPlugin(), ], resolve: { alias: { @@ -26,6 +44,13 @@ export default defineConfig({ }, worker: { format: "es", + rollupOptions: { + external: [], + output: { + entryFileNames: "utils/shiki/[name].js", + inlineDynamicImports: true, + }, + }, }, build: { lib: { From 2bbfe63de8e2322e5e468e4f9a8317d3a321ded2 Mon Sep 17 00:00:00 2001 From: lindsayzhng Date: Tue, 3 Feb 2026 22:27:38 -0800 Subject: [PATCH 2/2] simplify bundle path and use relative --- packages/components/vite.config.ts | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/packages/components/vite.config.ts b/packages/components/vite.config.ts index 8e91a37e..b1fe85bc 100644 --- a/packages/components/vite.config.ts +++ b/packages/components/vite.config.ts @@ -1,27 +1,11 @@ import { resolve } from "node:path"; import tailwindcss from "@tailwindcss/vite"; import react from "@vitejs/plugin-react"; -import { defineConfig, type Plugin } from "vite"; +import { defineConfig } from "vite"; import dts from "vite-plugin-dts"; -function relativeWorkerPlugin(): Plugin { - return { - name: "relative-worker-path", - enforce: "post", - generateBundle(_options, bundle) { - for (const [fileName, chunk] of Object.entries(bundle)) { - if (chunk.type === "chunk" && fileName.includes("worker-client")) { - chunk.code = chunk.code.replace( - /\/utils\/shiki\/worker\.js/g, - "./worker.js" - ); - } - } - }, - }; -} - export default defineConfig({ + base: "", plugins: [ react(), tailwindcss(), @@ -35,7 +19,6 @@ export default defineConfig({ outDir: "dist", rollupTypes: false, }), - relativeWorkerPlugin(), ], resolve: { alias: { @@ -47,7 +30,7 @@ export default defineConfig({ rollupOptions: { external: [], output: { - entryFileNames: "utils/shiki/[name].js", + entryFileNames: "utils/shiki/worker.js", inlineDynamicImports: true, }, },