diff --git a/src/composables/useMonacoEditor.ts b/src/composables/useMonacoEditor.ts index 02748690..68ccdd90 100644 --- a/src/composables/useMonacoEditor.ts +++ b/src/composables/useMonacoEditor.ts @@ -1,8 +1,9 @@ import type { Ref } from 'vue' import type { SqlStatement, StatementToExecute } from './useSqlStatements' -import * as monaco from 'monaco-editor' +import * as monaco from 'monaco-editor/esm/vs/editor/editor.api' import EditorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker' import { onBeforeUnmount } from 'vue' + import { getSqlGutterDecorations, getStatementAtLine, @@ -13,6 +14,12 @@ import { } from './useSqlStatements' import { useTheme } from './useTheme' +// Import only SQL-related grammars instead of all Monaco languages +// (Typescript/CSS/HTML/JSON workers alone add ~8MB to the bundle). +import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution' +import 'monaco-editor/esm/vs/basic-languages/mysql/mysql.contribution' +import 'monaco-editor/esm/vs/basic-languages/pgsql/pgsql.contribution' + export type { ExecuteSource, StatementToExecute } from './useSqlStatements' // Configure Monaco Editor workers for Vite diff --git a/types/vite-env.d.ts b/types/vite-env.d.ts index 7d350b29..3cb67abb 100644 --- a/types/vite-env.d.ts +++ b/types/vite-env.d.ts @@ -6,3 +6,9 @@ declare module '*.vue' { const component: InstanceType export default component } + +// Monaco Editor API without built-in language contributions +// Types are identical to the main monaco-editor bundle. +declare module 'monaco-editor/esm/vs/editor/editor.api' { + export * from 'monaco-editor' +}