import { resolve } from 'path'; import { defineConfig } from 'vite'; import dts from "vite-plugin-dts"; import stripComments from "vite-plugin-strip-comments"; const components = ['alert', 'button', 'carousel', 'collapse', 'dropdown', 'modal', 'offcanvas', 'popover', 'scrollspy', 'tab', 'toast', 'tooltip']; const componentFile = (entry: string, format: string) => { const ext = format === 'iife' ? 'js' : format === 'es' ? 'mjs' : format; return `${entry}.${ext}` }; export default defineConfig({ base: './', resolve: { alias: { "~": resolve(__dirname, "src"), }, }, esbuild: { legalComments: 'none', }, plugins: [ dts({ outDir: 'dist/components', copyDtsFiles: true, rollupTypes: true, }), stripComments({ type: 'none' }), ], build: { target: 'ESNext', minify: 'esbuild', outDir: 'dist/components', lib: { entry: components.map((component) => resolve(__dirname, `src/components/${component}.ts`)), formats: ['es', 'cjs'], fileName: (format, entry) => componentFile(entry, format), }, sourcemap: true, }, });