import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import dts from 'vite-plugin-dts' import { resolve } from 'node:path' // Library build for distribution as an installable package (@geljic/ads3-design-system). // Kept separate from vite.config.ts so the Storybook + Vitest setup there stays untouched. // Build with: npm run build:lib export default defineConfig({ plugins: [ react(), dts({ tsconfigPath: './tsconfig.app.json', // Emit `dist/index.d.ts` (+ per-file declarations) rather than nesting under dist/src. entryRoot: 'src', include: ['src'], exclude: [ 'src/**/*.stories.tsx', 'src/**/*.test.tsx', 'src/main.tsx', 'src/App.tsx', 'src/**/_story-helpers*', ], }), ], resolve: { // Resolve ADS's 97 internal `@/...` imports at build time so they never leak to consumers. alias: { '@': resolve(__dirname, 'src') }, }, build: { lib: { entry: resolve(__dirname, 'src/index.ts'), formats: ['es'], fileName: () => 'index.js', }, rollupOptions: { // React + lucide-react are peer deps (consumer apps already have them) — externalise to avoid // bundling a second copy. Everything else (clsx, tailwind-merge, @floating-ui) is small and bundled. external: ['react', 'react-dom', 'react/jsx-runtime', 'lucide-react'], output: { preserveModules: false }, }, sourcemap: true, emptyOutDir: true, // Library output only — don't copy public/ (favicons, logos) into the package. copyPublicDir: false, }, })