import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' import svgLoader from 'vite-svg-loader' import vuetify from 'vite-plugin-vuetify' import { fileURLToPath } from 'node:url' // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ app: { head: { titleTemplate: '%s - NuxtJS Admin Template', title: 'Vuexy', link: [{ rel: 'icon', type: 'image/x-icon', href: process.env.NUXT_APP_BASE_URL+'/favicon.ico', }], }, }, devtools: { enabled: true, }, css: [ '@core/scss/template/index.scss', '@styles/styles.scss', '@/plugins/iconify/icons.css', ], /* ❗ Please read the docs before updating runtimeConfig https://nuxt.com/docs/guide/going-further/runtime-config */ runtimeConfig: { // Private keys are only available on the server AUTH_ORIGIN: process.env.AUTH_ORIGIN, AUTH_SECRET: process.env.AUTH_SECRET, // Public keys that are exposed to the client. public: { apiBaseUrl: process.env.NUXT_PUBLIC_API_BASE_URL || '/api', mapboxAccessToken: process.env.MAPBOX_ACCESS_TOKEN, }, }, components: { dirs: [{ path: '@/@core/components', pathPrefix: false, }, { path: '@/views/demos', pathPrefix: false, }, { path: '~/components/global', global: true, }, { path: '~/components', pathPrefix: false, }], }, auth: { baseURL: process.env.AUTH_ORIGIN, globalAppMiddleware: false, provider: { type: 'authjs', }, }, plugins: [ '@/plugins/casl/index.js', '@/plugins/vuetify/index.js', '@/plugins/iconify/index.js', ], imports: { dirs: ['./@core/utils', './@core/composable/', './plugins/*/composables/*'], }, hooks: {}, experimental: { typedPages: true, }, typescript: { tsConfig: { compilerOptions: { paths: { '@/*': ['../*'], '@themeConfig': ['../themeConfig.js'], '@layouts/*': ['../@layouts/*'], '@layouts': ['../@layouts'], '@core/*': ['../@core/*'], '@core': ['../@core'], '@images/*': ['../assets/images/*'], '@styles/*': ['../assets/styles/*'], '@validators': ['../@core/utils/validators'], '@db/*': ['../server/fake-db/*'], '@api-utils/*': ['../server/utils/*'], }, }, }, }, // ℹ️ Disable source maps until this is resolved: https://github.com/vuetifyjs/vuetify-loader/issues/290 sourcemap: { server: false, client: false, }, alias: { '@': fileURLToPath(new URL('.', import.meta.url)), '@themeConfig': fileURLToPath(new URL('./themeConfig.js', import.meta.url)), '@core': fileURLToPath(new URL('./@core', import.meta.url)), '@layouts': fileURLToPath(new URL('./@layouts', import.meta.url)), '@images': fileURLToPath(new URL('./assets/images/', import.meta.url)), '@styles': fileURLToPath(new URL('./assets/styles/', import.meta.url)), '@configured-variables': fileURLToPath(new URL('./assets/styles/variables/_template.scss', import.meta.url)), '@db': fileURLToPath(new URL('./server/fake-db/', import.meta.url)), '@api-utils': fileURLToPath(new URL('./server/utils/', import.meta.url)), }, vue: { compilerOptions: { isCustomElement: tag => tag === 'swiper-container' || tag === 'swiper-slide', }, }, vite: { define: { 'process.env': {} }, resolve: { alias: { '@': fileURLToPath(new URL('.', import.meta.url)), '@themeConfig': fileURLToPath(new URL('./themeConfig.js', import.meta.url)), '@core': fileURLToPath(new URL('./@core', import.meta.url)), '@layouts': fileURLToPath(new URL('./@layouts', import.meta.url)), '@images': fileURLToPath(new URL('./assets/images/', import.meta.url)), '@styles': fileURLToPath(new URL('./assets/styles/', import.meta.url)), '@configured-variables': fileURLToPath(new URL('./assets/styles/variables/_template.scss', import.meta.url)), '@db': fileURLToPath(new URL('./server/fake-db/', import.meta.url)), '@api-utils': fileURLToPath(new URL('./server/utils/', import.meta.url)), }, }, build: { chunkSizeWarningLimit: 5000, }, optimizeDeps: { exclude: ['vuetify'], entries: [ './**/*.vue', ], }, plugins: [ svgLoader(), vuetify({ styles: { configFile: 'assets/styles/variables/_vuetify.scss', }, }), ], }, build: { transpile: ['vuetify'], }, compatibilityDate: '2025-07-15', i18n: { vueI18n: '../i18n.config.js', bundle: { optimizeTranslationDirective: true, }, }, modules: [ '@vueuse/nuxt', '@nuxtjs/i18n', '@nuxtjs/device', '@sidebase/nuxt-auth', '@pinia/nuxt', ], })