import { fileURLToPath, URL } from 'node:url';
import { resolve } from 'path';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import vueDevTools from 'vite-plugin-vue-devtools';
import mkcert from 'vite-plugin-mkcert';
import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js';
import Components from 'unplugin-vue-components/vite';
import { PrimeVueResolver } from '@primevue/auto-import-resolver';
import { copyFileSync } from 'fs';

// https://vite.dev/config/
export default defineConfig({
    server: {
        port: 3001,
        cors: true,
    },
    plugins: [
        vue(), 
        vueDevTools(), 
        mkcert(), 
        cssInjectedByJsPlugin(),
        Components({
            resolvers: [PrimeVueResolver()]
        })
    ],
    resolve: {
        alias: {
            '@': fileURLToPath(new URL('./src', import.meta.url)),
        },
    },
    define: {
        'process.env': {},
    },
    build: {
        target: 'esnext',
        outDir: 'dist/um',
        lib: {
            formats: ['es'],
            entry: resolve(__dirname, 'src/main.ts'),
            name: 'example',
            fileName: (format) => `example.js`,
        },
        cssCodeSplit: false,
        rollupOptions: {
            output: {
                format: 'es',
                inlineDynamicImports: true,
                manualChunks: undefined,
                entryFileNames: 'example.js',
                chunkFileNames: '[name].js',
                assetFileNames: (assetInfo) => {
                    if (assetInfo.name === 'style.css') {
                        return 'styles.css';
                    }
                    return '[name][extname]';
                },
            },
        },
        minify: true,
    },
});
