import path from 'path';
import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';
import escapeStringRegexp from 'escape-string-regexp';
import { visualizer } from 'rollup-plugin-visualizer';
import packageJson from './package.json';

export default defineConfig(({ mode }) => {
  return {
    root: path.resolve(__dirname, './'),
    resolve: {
      extensions: ['.ts', '.js'],
    },
    plugins: [
      dts({
        rollupTypes: true,
      }),
      mode === 'analyze'
        ? visualizer({
            open: true,
          })
        : null,
    ],
    build: {
      lib: {
        entry: path.resolve(__dirname, './src/index.ts'),
        formats: ['es'],
        fileName: `index`,
      },
      outDir: path.resolve(__dirname, './dist'),
      rollupOptions: {
        external: [...Object.keys(packageJson.dependencies || {}).map(name => new RegExp(`^${escapeStringRegexp(name)}(/|$)`))],
      },
    },
  }
});