import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' import viteSvgIcons from 'vite-plugin-svg-icons' import styleImport from 'vite-plugin-style-import' export default ({ mode }) => { const root = process.cwd() const env = loadEnv(mode, root) return defineConfig({ base: env.VITE_PUBLIC_PATH, root, resolve: { alias: { '@': path.resolve(__dirname, './src'), public: path.resolve(__dirname, './public'), vue: path.resolve(`./node_modules/vue`), }, }, css: { // css模块化 modules: { generateScopedName: '[name]__[local]___[hash:base64:5]', hashPrefix: 'prefix', }, // 支持less preprocessorOptions: { less: { // 支持内联 JavaScript javascriptEnabled: true, }, }, }, // 设置代理 server: { port: Number(env.VITE_PORT), proxy: getProxy(env.VITE_PROXY), host: '0.0.0.0', }, plugins: [ vue(), viteSvgIcons({ // 指定需要缓存的图标文件夹,地址可改 iconDirs: [path.resolve(process.cwd(), 'src/assets/svg')], // 指定symbolId格式 symbolId: 'icon-[dir]-[name]', }), // vant 样式按需引入 styleImport({ libs: [ { libraryName: 'vant', esModule: true, resolveStyle: name => `vant/es/${name}/style`, }, ], }), ], }) } /** * @description: 开发模式中获取代理信息,可以是多个代理 */ function getProxy(proxy: string) { let proxyObj = {} if (proxy != undefined) { const envProxy = JSON.parse(proxy) envProxy.forEach((f: any) => { proxyObj[f[0]] = { target: f[1], changeOrigin: true, ws: true, // secure: false, secure: process && process.env.NODE_ENV === 'production' ? true : false, } }) } return proxyObj }