import type { UserConfig } from 'vite'; import { resolve } from 'path'; import { buildConfig } from '../../build/vite/buildConfig'; import { createVitePluginsLib } from '../../build/vite/plugin'; import { generateModifyVars } from '../../build/vite/theme'; import dts from 'vite-plugin-dts'; function pathResolve(dir: string) { return resolve(process.cwd(), '.', dir); } export default (): UserConfig => { const root = process.cwd(); const envDir = resolve(root, '../../env'); return { root, envDir, resolve: { alias: [ { find: 'vue-i18n', replacement: 'vue-i18n/dist/vue-i18n.esm-bundler.js', }, // /@/xxxx => src/xxxx { find: /\/@\//, replacement: pathResolve('../../app') + '/', }, ], }, esbuild: { pure: ['debugger'], }, build: buildConfig({ name: 'dqutils', entry: './index.ts', formats: ['es', 'umd'], }), css: { preprocessorOptions: { less: { javascriptEnabled: true, modifyVars: generateModifyVars(), }, }, postcss: { plugins: [], }, }, // The vite plugin used by the project. The quantity is large, so it is separately extracted and managed plugins: createVitePluginsLib([ dts({ entryRoot: pathResolve('.'), copyDtsFiles: true, exclude: ['vite.config.lib.ts'], include: ['../../types/global.d.ts', './**/*.ts'], }), ]), optimizeDeps: { // @iconify/iconify: The dependency is dynamically and virtually loaded by @purge-icons/generated, so it needs to be specified explicitly include: [ '@vue/runtime-core', '@vue/shared', '@iconify/iconify', 'ant-design-vue/es/locale/zh_CN', 'ant-design-vue/es/locale/en_US', ], // exclude: ['vue-demi'], }, }; };