Files
vtsuru.live/vite.config.mts
2024-11-23 18:56:27 +08:00

59 lines
1.5 KiB
TypeScript

// vite.config.ts
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import path from 'path'
import { defineConfig } from 'vite'
import svgLoader from 'vite-svg-loader'
import Markdown from 'unplugin-vue-markdown/vite'
import caddyTls from './plugins/vite-plugin-caddy'
import ViteMonacoPlugin from 'vite-plugin-monaco-editor'
import monacoEditorPluginModule from 'vite-plugin-monaco-editor'
const isObjectWithDefaultFunction = (
module: unknown
): module is { default: typeof monacoEditorPluginModule } =>
module != null &&
typeof module === 'object' &&
'default' in module &&
typeof module.default === 'function'
const monacoEditorPlugin = isObjectWithDefaultFunction(monacoEditorPluginModule)
? monacoEditorPluginModule.default
: monacoEditorPluginModule
export default defineConfig({
plugins: [
vue({
script: {
propsDestructure: true,
defineModel: true
},
include: [/\.vue$/, /\.md$/],
template: {
compilerOptions: {
isCustomElement: (tag) => tag.startsWith('yt-')
}
}
}),
svgLoader(),
vueJsx(),
Markdown({
/* options */
}),
caddyTls(),
monacoEditorPlugin({ languageWorkers: ['css'] })
],
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
}
},
define: {
'process.env': {},
global: 'window'
},
optimizeDeps: {
include: ['@vicons/fluent', '@vicons/ionicons5', 'vue', 'vue-router']
}
})