nfsense/client/vite.config.ts
adroslice 8508309b2c Updated Dependencies
- Adjusted config to work with new vue-macros
2024-05-18 19:49:03 +02:00

114 lines
2.8 KiB
TypeScript

import { defineConfig } from 'vite';
import TSConfigPaths from 'vite-tsconfig-paths';
import Vue from '@vitejs/plugin-vue';
import Pages from 'vite-plugin-pages';
import Markdown from 'unplugin-vue-markdown/vite';
import Components from 'unplugin-vue-components/vite';
import Icons from 'unplugin-icons/vite';
import IconsResolver from 'unplugin-icons/resolver';
import I18N from '@intlify/unplugin-vue-i18n/vite';
import Macros from 'unplugin-vue-macros/vite';
import AutoImport from 'unplugin-auto-import/vite';
import Shiki from 'markdown-it-shiki';
import LinkAttributes from 'markdown-it-link-attributes';
// https://vitejs.dev/config/
export default defineConfig({
server: {
'proxy': {
'/api': 'http://localhost:8080',
'/login': 'http://localhost:8080',
'/logout': 'http://localhost:8080',
'/session': 'http://localhost:8080',
'/ws': {
target: 'ws://localhost:8080',
ws: true,
},
},
},
plugins: [
TSConfigPaths(),
Macros({
plugins: {
vue: Vue({
include: [/\.vue$/, /\.md$/],
reactivityTransform: true,
}),
},
shortEmits: true,
reactivityTransform: true,
shortBind: true
}),
Pages({
extensions: ['vue', 'md'],
}),
Markdown({
wrapperClasses: 'prose prose-sm m-auto text-left',
headEnabled: true,
markdownItSetup(md) {
md.use(Shiki, {
theme: {
light: 'vitesse-light',
dark: 'vitesse-dark',
},
});
md.use(LinkAttributes, {
matcher: (link: string) => /^https?:\/\//.test(link),
attrs: {
target: '_blank',
rel: 'noopener',
},
});
},
}),
Components({
extensions: ['vue'],
include: [/\.vue$/, /\.vue\?vue/],
dts: 'src/generated/components.d.ts',
resolvers: [
IconsResolver(),
(componentName) => {
if (componentName === 'FocusTrap')
return { name: 'FocusTrap', from: 'focus-trap-vue' };
},
],
types: [{
from: 'focus-trap-vue',
names: ['FocusTrap'],
}],
}),
Icons({
}),
I18N({
runtimeOnly: true,
compositionOnly: true,
fullInstall: true,
include: ['src/locales'],
}),
AutoImport({
include: [
/\.[tj]sx?$/,
/\.vue$/, /\.vue\?vue/,
/\.md$/,
],
imports: [
'vue',
'vue-router',
'vue-i18n',
'vue/macros',
'@vueuse/core',
'@vueuse/head',
{
from: 'vue-toast-notification',
imports: ['useToast'],
},
],
dts: 'src/generated/auto-imports.d.ts',
dirs: ['src/composables'],
vueTemplate: true,
}),
],
});