import { join, resolve } from 'node:path' import VueI18n from '@intlify/unplugin-vue-i18n/vite' import Vue from '@vitejs/plugin-vue' import Unocss from 'unocss/vite' import Info from 'unplugin-info/vite' import VueRouter from 'unplugin-vue-router/vite' import Yaml from 'unplugin-yaml/vite' import VueDevTools from 'vite-plugin-vue-devtools' import Layouts from 'vite-plugin-vue-layouts' import VueMacros from 'vue-macros/vite' import { defineConfig } from 'vite' export default defineConfig({ base: '/_ui/server-auth/', optimizeDeps: { exclude: [ // Internal Packages '@proj-airi/stage-ui/*', ], }, resolve: { alias: { '@proj-airi/i18n': resolve(join(import.meta.dirname, '..', '..', 'packages', 'i18n', 'src')), '@proj-airi/stage-ui': resolve(join(import.meta.dirname, '..', '..', 'packages', 'stage-ui', 'src')), '@proj-airi/stage-shared': resolve(join(import.meta.dirname, '..', '..', 'packages', 'stage-shared', 'src')), '@proj-airi/stage-layouts': resolve(join(import.meta.dirname, '..', '..', 'packages', 'stage-layouts', 'src')), }, }, server: { fs: { // To mute errors like: // The request id ".../node_modules/@fontsource/sniglet/files/sniglet-latin-400-normal.woff" is outside of Vite serving allow list. // // See: https://vite.dev/config/server-options#server-fs-strict strict: false, }, warmup: { clientFiles: [ `${resolve(join(import.meta.dirname, '..', '..', 'packages', 'stage-ui', 'src'))}/*.vue`, ], }, }, build: { emptyOutDir: true, outDir: resolve(join(import.meta.dirname, '..', 'server', 'public', 'ui-server-auth')), sourcemap: true, }, worker: { format: 'es', rollupOptions: { output: { inlineDynamicImports: false, }, }, }, plugins: [ Info(), Yaml(), VueMacros({ plugins: { vue: Vue({ include: [/\.vue$/, /\.md$/], }), vueJsx: false, }, betterDefine: false, }), // https://github.com/posva/unplugin-vue-router VueRouter({ extensions: ['.vue', '.md'], dts: resolve(import.meta.dirname, 'src/typed-router.d.ts'), importMode: 'async', routesFolder: [ resolve(import.meta.dirname, 'src', 'pages'), ], exclude: ['**/components/**'], }), // https://github.com/JohnCampionJr/vite-plugin-vue-layouts Layouts({ layoutsDirs: [ resolve(import.meta.dirname, 'src', 'layouts'), resolve(import.meta.dirname, '..', '..', 'packages', 'stage-layouts', 'src', 'layouts'), ], }), // https://github.com/antfu/unocss // see uno.config.ts for config Unocss(), // https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n VueI18n({ runtimeOnly: true, compositionOnly: true, fullInstall: true, }), // https://github.com/webfansplz/vite-plugin-vue-devtools VueDevTools(), ], })