import path from 'path'
import { defineConfig } from 'vite'
import babel from '@rollup/plugin-babel'
import { name } from './package.json'
import plugins from './docs/src/plugin/common-plugins'

const camelize = (name: string) =>
  name.replace(/(^|-)(\w)/g, (a, b, c) => c.toUpperCase())

export default defineConfig({
  root: path.resolve(__dirname, 'docs'),
  resolve: {
    alias: {
      '/@src': path.resolve(__dirname, 'src'),
    },
  },
  build: {
    target: 'es2015',
    outDir: path.resolve(__dirname, 'lib'),
    lib: {
      entry: path.resolve(__dirname, 'src/index.ts'),
      name: camelize(name),
    },
    rollupOptions: {
      output: {
        exports: 'named',
        globals: (id: string) => {
          const name = id.replace(/^@/, '').split('/')[0]
          return camelize(name)
        },
        assetFileNames: 'layui.css',
      },
      plugins: [
        babel({
          exclude: 'node_modules/**',
          extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'],
          presets: ['@babel/preset-env', '@babel/preset-typescript'],
        }),
      ],
      external: ['vue', 'vue-router'],
    },
  },
  plugins,
})