import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
import WindiCss from 'vite-plugin-windicss';
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { VantResolver } from 'unplugin-vue-components/resolvers'
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import legacy from '@vitejs/plugin-legacy'

// https://vitejs.dev/config/
export default defineConfig({


  base: '/page/new/',
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
      '~': path.resolve(__dirname, 'src'),
      // '~components': path.resolve(__dirname, 'src/components'),
      // '~pages': path.resolve(__dirname, 'src/pages'),
      // '~utils': path.resolve(__dirname, 'src/utils'),
      // '~assets': path.resolve(__dirname, 'src/assets'),
      // '~styles': path.resolve(__dirname, 'src/styles'),
      // '~lib': path.resolve(__dirname, 'src/lib'),
      // '~plugins': path.resolve(__dirname, 'src/plugins'),
      // '~router': path.resolve(__dirname, 'src/router'),
      // '~store': path.resolve(__dirname, 'src/store'),
      // '~config': path.resolve(__dirname, 'src/config'),
      // '~api': path.resolve(__dirname, 'src/api'),
      // '~constants': path.resolve(__dirname, 'src/constants'),
      // '~locales': path.resolve(__dirname, 'src/locales'),
    }
  },
  plugins: [
    legacy({
      targets: ['defaults', 'ie >= 11', 'chrome 52'],  //需要兼容的目标列表，可以设置多个
      additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
      renderLegacyChunks: true,
      polyfills: [
        'es.symbol',
        'es.array.filter',
        'es.promise',
        'es.promise.finally',
        'es/map',
        'es/set',
        'es.array.for-each',
        'es.object.define-properties',
        'es.object.define-property',
        'es.object.get-own-property-descriptor',
        'es.object.get-own-property-descriptors',
        'es.object.keys',
        'es.object.to-string',
        'web.dom-collections.for-each',
        'esnext.global-this',
        'esnext.string.match-all'
      ]
    }),
    vue({
      reactivityTransform: true
    }),
    WindiCss(),
    AutoImport({
      dts: 'src/auto-imports.d.ts',
      imports: ['vue', 'vue/macros', 'vue-router',],
      dirs: [
        'src/composables',
        'src/store',
        'src/utils',
      ],
      resolvers: [VantResolver()],
      vueTemplate: true,
    }),
    Components({
      dts: 'src/components.d.ts',
      dirs: ['src/components/'],
      // allow auto load markdown components under `./src/components/`
      extensions: ['vue', 'md'],
      // allow auto import and register components used in markdown
      include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
      resolvers: [VantResolver(), IconsResolver()],
    }),
    Icons({
      compiler: 'vue3',
      autoInstall: true,
    })
  ],
  server: {
    host: true
  },
  build: {
    // sourcemap:'inline',
    rollupOptions: {
      output: {
        manualChunks: {
          axios: ['axios'],
          vant: ['vant'],
        }
      }
    }
  }
})
