import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; import dts from 'vite-plugin-dts'; import path from 'path'; import { fileURLToPath } from 'url'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); /** Keep peer/runtime deps out of published dist (including subpaths like @tamagui/config/v3). */ function isExternal(id) { if (id === 'react' || id === 'react/jsx-runtime' || id === 'react-dom' || id === 'react-dom/client') { return true; } if (id === 'tamagui' || id.startsWith('tamagui/')) return true; if (id.startsWith('@tamagui/')) return true; return false; } export default defineConfig({ plugins: [ react(), dts({ tsconfigPath: './tsconfig.json', insertTypesEntry: true, include: ['src/**/*.js', 'src/**/*.jsx'], exclude: ['**/*.test.*', '**/test/**'] }) ], build: { lib: { entry: path.resolve(__dirname, 'src/index.js'), formats: ['es'] }, rollupOptions: { external: isExternal, output: { // Preserve module structure - automatically preserves directory structure preserveModules: true, preserveModulesRoot: 'src', // Use original file names and paths entryFileNames: '[name].js', chunkFileNames: '[name].js' } }, outDir: 'dist', emptyOutDir: true, sourcemap: true } });