import { fileURLToPath, URL } from 'url'
import { loadEnv, createProxy } from "./load-env"
import { resolve } from 'path';
import { defineConfig } from 'vite'
import inject from '@rollup/plugin-inject';
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import VueI18n from '@intlify/vite-plugin-vue-i18n'
import { AntDesignVueResolver, ElementPlusResolver, VantResolver } from 'unplugin-vue-components/resolvers'
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
export default defineConfig( ({ command, mode }) => {
const { VITE_URL, VITE_BASE_URL, VITE_ZIP_NAME } = loadEnv(mode)
console.log(VITE_URL, VITE_BASE_URL, VITE_ZIP_NAME);
return {
base:'./',
plugins: [
vue(),
vueJsx(),
AutoImport({
resolvers: [ElementPlusResolver({importStyle: 'css'}), VantResolver(), AntDesignVueResolver()],
dts: "src/auto-import.d.ts"
}),
Components({
resolvers: [
AntDesignVueResolver(),
ElementPlusResolver(),
VantResolver(),
],
}),
VueI18n({
include: resolve(__dirname, './src/lang/**'),
}),
createSvgIconsPlugin({
iconDirs: [resolve(process.cwd(), 'src/icons/svg')],
symbolId: 'icon-[dir]-[name]',
}),
inject({
exclude: '*/node_modules/element-plus/**',
include: '**/*.*',
modules: {
_: 'lodash',
}
})
],
logLevel: 'info',
publicDir:'public',
server: {
https: false,
open: true,
port: 3000,
hmr: true,
host: "0.0.0.0",
proxy: createProxy(VITE_URL, VITE_BASE_URL),
},
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
'@comps': fileURLToPath(new URL('./src/components', import.meta.url)),
"@images": resolve(__dirname, "src/assets/images"),
}
},
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/_variables.scss";\n@import "@/assets/styles/mixin.scss";\n@import "@/styles/common.scss";\n`
}
}
},
build:{
outDir: 'dist',
reportCompressedSize: false,
rollupOptions: {
},
}
}
})