60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
import { fileURLToPath, URL } from 'node:url';
|
|
|
|
import { PrimeVueResolver } from '@primevue/auto-import-resolver';
|
|
import tailwindcss from '@tailwindcss/vite';
|
|
import vue from '@vitejs/plugin-vue';
|
|
import { visualizer } from 'rollup-plugin-visualizer'; // bundle analyzer
|
|
import AutoImport from 'unplugin-auto-import/vite'; // auto import Vue composables
|
|
import Components from 'unplugin-vue-components/vite';
|
|
import { defineConfig } from 'vitest/config';
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig({
|
|
test: {
|
|
environment: 'node',
|
|
include: ['src/**/*.spec.js'],
|
|
alias: {
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|
}
|
|
},
|
|
|
|
plugins: [
|
|
vue(),
|
|
|
|
tailwindcss(),
|
|
|
|
// Auto import de APIs do Vue (ref, computed, onMounted, etc)
|
|
AutoImport({
|
|
imports: ['vue'],
|
|
dts: 'src/auto-imports.d.ts' // gera tipagem automática
|
|
}),
|
|
|
|
// Auto import de componentes do PrimeVue
|
|
Components({
|
|
resolvers: [PrimeVueResolver()]
|
|
}),
|
|
|
|
// Visualizador de bundle (gera stats.html no build)
|
|
visualizer({
|
|
filename: 'dist/stats-before.html', // depois você muda pra stats-after.html
|
|
open: true,
|
|
gzipSize: true,
|
|
brotliSize: true
|
|
})
|
|
],
|
|
|
|
resolve: {
|
|
alias: {
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|
}
|
|
},
|
|
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
api: 'modern-compiler'
|
|
}
|
|
}
|
|
}
|
|
});
|