import Components from 'unplugin-vue-components/vite' import Vue from '@vitejs/plugin-vue' import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify' import Fonts from 'unplugin-fonts/vite' import VueRouter from 'unplugin-vue-router/vite' // Utilities import { defineConfig } from 'vite' import { fileURLToPath, URL } from 'node:url' // @ts-expect-error process is a nodejs global const host = process.env.TAURI_DEV_HOST; // https://vite.dev/config/ export default defineConfig(async () => ({ plugins: [ VueRouter({ dts: 'src/typed-router.d.ts', }), Vue({ template: { transformAssetUrls }, }), // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme Vuetify({ autoImport: true, styles: { configFile: 'src/styles/settings.scss', }, }), Components({ dts: 'src/components.d.ts', }), Fonts({ fontsource: { families: [ { name: 'Roboto', weights: [100, 300, 400, 500, 700, 900], styles: ['normal', 'italic'], }, ], }, }), ], optimizeDeps: { exclude: [ 'vuetify', 'vue-router', 'unplugin-vue-router/runtime', 'unplugin-vue-router/data-loaders', 'unplugin-vue-router/data-loaders/basic', ], }, define: { 'process.env': {} }, resolve: { alias: { '@': fileURLToPath(new URL('src', import.meta.url)), }, extensions: [ '.js', '.json', '.jsx', '.mjs', '.ts', '.tsx', '.vue', ], }, // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` // // 1. prevent Vite from obscuring rust errors clearScreen: false, // 2. tauri expects a fixed port, fail if that port is not available server: { port: 1420, strictPort: true, host: host || false, hmr: host ? { protocol: "ws", host, port: 1421, } : undefined, watch: { // 3. tell Vite to ignore watching `src-tauri` ignored: ["**/src-tauri/**"], }, }, }));