import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import requireTransform from 'vite-plugin-require-transform' import postCssPxToRem from 'postcss-pxtorem' import { createStyleImportPlugin, AndDesignVueResolve } from 'vite-plugin-style-import' import { resolve } from 'path' import path from 'path' import type { ConfigEnv } from 'vite' export default ({ mode }: ConfigEnv) => { const root = process.cwd() const ENV = loadEnv(mode, root) console.log(`当前环境信息:`, mode) console.log(`ENV:`, ENV) return defineConfig({ base: ENV.VITE_BASE_URL, server: { host: '0.0.0.0', // https: false, cors: true, open: true, port: 9990, proxy: {} }, define: { 'process.env': { mode: mode, BASE_URL: ENV.VITE_BASE_URL, API_BASE: ENV.VITE_API_BASE }, buildTime: new Date() }, resolve: { alias: { '@': '/src' }, extensions: ['.js', '.ts', '.jsx', '.tsx', '.json'] }, optimizeDeps: { include: ['kml-geojson'] }, json: { namedExports: true, stringify: false }, css: { preprocessorOptions: { less: { javascriptEnabled: true }, scss: { additionalData: `@import "@/assets/style/mixin.scss";` } }, postcss: { plugins: [ postCssPxToRem({ rootValue: 80, unitPrecision: 5, selectorBlackList: ['ignore'], propList: ['*'], additionalPropList: ['*'], replace: true, mediaQuery: false, minPixelValue: 1 }) ] } }, build: { outDir: path.join('./dist', ENV.VITE_BASE_URL), assetsInlineLimit: 4096, cssCodeSplit: true, sourcemap: false, commonjsOptions: {}, rollupOptions: { input: { index: path.resolve(__dirname, 'index.html') } }, manifest: false, minify: 'terser', terserOptions: {}, write: true, emptyOutDir: true }, plugins: [ vue(), requireTransform({ fileRegex: /.ts$|.tsx$|.vue$/ }), createStyleImportPlugin({ resolves: [AndDesignVueResolve()], libs: [ { libraryName: 'ant-design-vue', esModule: true, resolveStyle: (name) => { return `ant-design-vue/es/${name}/style/index` } } ] }) ] }) }