导读:vite配置文件的编写,包含部分plugin插件应用、@配置、proxy本地代理
import { fileURLToPath, URL } from 'node:url'
import { defineConfig, loadEnv, UserConfig, ConfigEnv } from 'vite';
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 { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// https://vitejs.dev/config/
export default defineConfig(({ mode }: ConfigEnv): UserConfig => {
const env = loadEnv(mode, process.cwd());
// 判断运行环境,通过文件配置属性VITE_BASE_URL
const appMode = env.VITE_APP_MODE;
const api = env.VITE_BASE_URL;
return {
plugins: [
vue(),
vueJsx(),
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [
// 1、配置ElementPlus采用sass样式配色系统
ElementPlusResolver({ importStyle: 'sass' }),
],
}),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
css: {
preprocessorOptions: {
scss: {
// 2、自动导入定制化样式文件进行样式覆盖
additionalData: `
@use "@/styles/element/index.scss" as *;
@use "@/styles/var.scss" as *;
`,
},
},
},
// !! 这个地址跟服务器上访问的 url紧密相关。类似vue2那个publicPath
// 静态资源基础路径 base :'./' || '',
// 例如:base :'/h5' ,// 子目录h5下,一般跟打包后的文件夹名字一致,指的是项目根目录和主域名之间的路径
base: appMode == 'production' ? './' : '/',
// 打包配置
build: {
outDir: 'vite-vue-ts',
rollupOptions: {
output: {
//js和css文件夹分离
chunkFileNames: 'static/js/[name]-[hash].js', // 入口文件名
entryFileNames: 'static/js/[name]-[hash].js', // 块文件名
assetFileNames: 'static/[ext]/[name]-[hash].[ext]', // 资源文件名 css 图片等等
manualChunks: {
vue: ['vue', 'pinia', 'vue-router'],
},
},
},
},
// 配置代理,解决本地开发跨域问题
server: {
host: '0.0.0.0',
port: 8083,
open: true, // 运行是否自动打开浏览器
proxy: {
[api]: {
target: env.VITE_BASE_API,
changeOrigin: true,
rewrite: (path) => path.replace(new RegExp('^' + api), ''),
},
},
},
};
});