Skip to content

Commit a733509

Browse files
committed
perf(vite): import monaco worker as url
1 parent b1e3a62 commit a733509

File tree

1 file changed

+22
-18
lines changed

1 file changed

+22
-18
lines changed

src/components/MonacoEditor.tsx

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,31 @@ import { createEffect, onCleanup, onMount, splitProps } from "solid-js"
33
import * as monaco from "monaco-editor"
44

55
// Configure worker for Monaco Editor
6-
import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?worker"
7-
import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?worker"
8-
import cssWorker from "monaco-editor/esm/vs/language/css/css.worker?worker"
9-
import htmlWorker from "monaco-editor/esm/vs/language/html/html.worker?worker"
10-
import tsWorker from "monaco-editor/esm/vs/language/typescript/ts.worker?worker"
6+
import editorWorker from "monaco-editor/esm/vs/editor/editor.worker?url"
7+
import jsonWorker from "monaco-editor/esm/vs/language/json/json.worker?url"
8+
import cssWorker from "monaco-editor/esm/vs/language/css/css.worker?url"
9+
import htmlWorker from "monaco-editor/esm/vs/language/html/html.worker?url"
10+
import tsWorker from "monaco-editor/esm/vs/language/typescript/ts.worker?url"
1111

1212
self.MonacoEnvironment = {
13-
getWorker(_, label) {
14-
if (label === "json") {
15-
return new jsonWorker()
13+
getWorker: function (_, label) {
14+
switch (label) {
15+
case "json":
16+
return new Worker(jsonWorker, { type: "module" })
17+
case "css":
18+
case "scss":
19+
case "less":
20+
return new Worker(cssWorker, { type: "module" })
21+
case "html":
22+
case "handlebars":
23+
case "razor":
24+
return new Worker(htmlWorker, { type: "module" })
25+
case "typescript":
26+
case "javascript":
27+
return new Worker(tsWorker, { type: "module" })
28+
default:
29+
return new Worker(editorWorker, { type: "module" })
1630
}
17-
if (label === "css" || label === "scss" || label === "less") {
18-
return new cssWorker()
19-
}
20-
if (label === "html" || label === "handlebars" || label === "razor") {
21-
return new htmlWorker()
22-
}
23-
if (label === "typescript" || label === "javascript") {
24-
return new tsWorker()
25-
}
26-
return new editorWorker()
2731
},
2832
}
2933
export interface MonacoEditorProps

0 commit comments

Comments
 (0)