UNPKG

react-repl-plus

Version:

React component for editing React components, it is similar to vue repl

53 lines (48 loc) 1.78 kB
import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker' import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker' import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker' import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker' import * as monaco from 'monaco-editor'; let initted = false export function initMonaco() { if (initted) return loadMonacoEnv() initted = true } export function loadMonacoEnv() { self.MonacoEnvironment = { getWorker(_: any, label: string) { switch (label) { case 'json': return new jsonWorker() case 'css': case 'scss': case 'less': return new cssWorker() case 'typescript': case 'javascript': return new tsWorker() default: return new editorWorker() } } }; monaco.languages.typescript.javascriptDefaults.setCompilerOptions({ target: monaco.languages.typescript.ScriptTarget.ES2022, allowNonTsExtensions: true, allowJs: true, jsx: monaco.languages.typescript.JsxEmit.React, moduleResolution: monaco.languages.typescript.ModuleResolutionKind.NodeJs, module: monaco.languages.typescript.ModuleKind.ESNext, esModuleInterop: true, typeRoots: ['node_modules/@types'], }) monaco.languages.typescript.typescriptDefaults.setCompilerOptions({ ...monaco.languages.typescript.javascriptDefaults.getCompilerOptions(), allowSyntheticDefaultImports: true, strict: true, }) // 添加默认 lib(重要,否则编辑器不知道 DOM 类型等) monaco.languages.typescript.typescriptDefaults.setEagerModelSync(true) monaco.languages.typescript.javascriptDefaults.setEagerModelSync(true) }