import { babel } from '@rollup/plugin-babel' import { builtinModules } from 'module' import { join, dirname } from 'node:path' import { fileURLToPath } from 'node:url' import { defineConfig } from 'vite' import packageJson from './package.json' const __dirname = dirname(fileURLToPath(import.meta.url)) function getPathAliasEntries(entriesRecord: Record) { return Object.entries(entriesRecord).reduce((acc, [aliasName, relativePath]) => { acc[aliasName] = join(__dirname, relativePath) return acc }, entriesRecord) } export default defineConfig(({ mode }) => ({ mode, resolve: { alias: getPathAliasEntries({ '@': 'src/', }), }, plugins: [ babel({ rootMode: 'upward', babelHelpers: 'runtime', extensions: ['.js', '.ts'], skipPreflightCheck: true, }), ], build: { sourcemap: mode === 'development', emptyOutDir: false, outDir: 'dist', lib: { entry: 'src/index.ts', fileName: 'index', formats: ['es', 'cjs'], }, rollupOptions: { external: [...Object.keys(packageJson.dependencies || {}), ...builtinModules], }, }, }))