Skip to content

Commit d407bad

Browse files
committed
Add local monaco editor instead of relying on cdn
1 parent cb323fe commit d407bad

File tree

3 files changed

+34
-2
lines changed

3 files changed

+34
-2
lines changed

frontend/package-lock.json

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
"prettier": "^3.2.5",
4040
"typescript": "~5.4.0",
4141
"vite": "^5.3.1",
42+
"vite-plugin-monaco-editor": "^1.1.0",
4243
"vite-plugin-vue-devtools": "^7.3.1",
4344
"vue-tsc": "^2.0.21"
4445
}
45-
}
46+
}

frontend/vite.config.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,34 @@ import { defineConfig } from 'vite'
44
import vue from '@vitejs/plugin-vue'
55
import vueJsx from '@vitejs/plugin-vue-jsx'
66
import vueDevTools from 'vite-plugin-vue-devtools'
7+
import monacoEditorPlugin from 'vite-plugin-monaco-editor'
78

89
// https://vitejs.dev/config/
910
export default defineConfig({
1011
plugins: [
1112
vue(),
1213
vueJsx(),
1314
vueDevTools(),
15+
(monacoEditorPlugin as any).default({
16+
languageWorkers: ['editorWorkerService', 'typescript', 'json', 'html', 'css']
17+
})
1418
],
19+
define: {
20+
// Define Monaco Editor worker paths
21+
'process.env': {}
22+
},
1523
resolve: {
1624
alias: {
1725
'@': fileURLToPath(new URL('./src', import.meta.url))
1826
}
1927
},
28+
optimizeDeps: {
29+
include: [
30+
'monaco-editor/esm/vs/editor/editor.api',
31+
'monaco-editor/esm/vs/editor/editor.worker',
32+
'monaco-editor/esm/vs/language/typescript/ts.worker'
33+
]
34+
},
2035
build: {
2136
minify: 'terser',
2237
terserOptions: {
@@ -28,12 +43,18 @@ export default defineConfig({
2843
output: {
2944
entryFileNames: `assets/[name].js`,
3045
chunkFileNames: `assets/[name].js`,
31-
assetFileNames: `assets/[name].[ext]`
46+
assetFileNames: (assetInfo) => {
47+
if (assetInfo.name?.endsWith('.ttf') || assetInfo.name?.endsWith('.woff') || assetInfo.name?.endsWith('.woff2')) {
48+
return 'assets/fonts/[name].[ext]';
49+
}
50+
return 'assets/[name].[ext]';
51+
}
3252
}
3353
},
3454
sourcemap: true,
3555
outDir: 'dist',
3656
emptyOutDir: true,
3757
target: 'esnext',
58+
assetsInlineLimit: 0, // Don't inline assets, keep them as separate files
3859
}
3960
})

0 commit comments

Comments
 (0)