002 vue3-admin项目的目录及文件说明之vite.config.ts文件
说明
vite.config.ts 是 Vite 构建工具的配置文件,用于自定义 Vite 的行为和功能。
基本结构
// Vite构建工具的核心配置文件,用于自定义项目构建行为
import { defineConfig } from "vite"
import vue from "@vitejs/plugin-vue"
// node 中的模块引入
import path from "path"
import UnoCSS from "unocss/vite"
// element-plus 自动导入
import AutoImport from "unplugin-auto-import/vite"
import Components from "unplugin-vue-components/vite"
import { ElementPlusResolver } from "unplugin-vue-components/resolvers"
import { fileURLToPath } from "url" // 新增导入
import ElementPlus from "unplugin-element-plus/vite"
// element-plus 自动导入end
//配置选项: https://vite.dev/config/
// defineConfig:Vite 提供的类型辅助函数,用于获得更好的 TypeScript 类型提示
// 导出的对象为 Vite 的核心配置对象
export default defineConfig({
// 作用:配置 Vite 插件扩展功能
// vue():这是 @vitejs/plugin-vue 插件的默认导出,用于支持 Vue 单文件组件 (SFC) 的编译
// 注意:使用前需确保已安装依赖 pnpm add -D @vitejs/plugin-vue
plugins: [
vue(),
UnoCSS(),
AutoImport({
imports: ["vue", "vue-router", "pinia"],
// 解析element-plus的api
resolvers: [ElementPlusResolver()],
dts: fileURLToPath(new URL("./auto-import.d.ts", import.meta.url)),
// 省去显示导入import语句,eslint会报错,此处就是解决eslint报错的
// 给eslint生成的配置,只需要一次即配一次true即可,其他改为false
eslintrc: {
enabled: false,
filepath: fileURLToPath(new URL("./.eslintrc-auto-import.json", import.meta.url)),
globalsPropValue: true
}
}),
Components({
// 解析element-plus的组件
dirs: ["src/components", "src/layout/components"],
resolvers: [ElementPlusResolver()]
}),
// 按需导入后,配置element-plus的样式
ElementPlus({})
],
// 解析相关配置
resolve: {
// alias 用于设置路径别名
alias: [
{
// find:需要被替换的路径别名标识
find: "@",
// replacement:实际文件系统路径
replacement: path.resolve(__dirname, "src")
}
]
},
server: {
// 配置代理(反向代理)
proxy: {
"/dev-api": {
target: "http://localhost:3000",
changeOrigin: true,
rewrite: (path) => path.replace(/^\/dev-api/, "/api")
}
}
},
}
})
安装依赖
pnpm add -D @vitejs/plugin-vue unocss unplugin-auto-import unplugin-vue-components unplugin-element-plus
核心配置项
1 插件配置
plugins: [
vue(),
UnoCSS(),
AutoImport({
imports: ["vue", "vue-router", "pinia"],
// 解析element-plus的api
resolvers: [ElementPlusResolver()],
dts: fileURLToPath(new URL("./auto-import.d.ts", import.meta.url)),
// 省去显示导入import语句,eslint会报错,此处就是解决eslint报错的
// 给eslint生成的配置,只需要一次即配一次true即可,其他改为false
eslintrc: {
enabled: false,
filepath: fileURLToPath(new URL("./.eslintrc-auto-import.json", import.meta.url)),
globalsPropValue: true
}
}),
Components({
// 解析element-plus的组件
dirs: ["src/components", "src/layout/components"],
resolvers: [ElementPlusResolver()]
}),
// 按需导入后,配置element-plus的样式
ElementPlus({})
]
2 路径解析配置 (resolve)
resolve: {
alias: [
{
find: "@",
replacement: path.resolve(__dirname, "src")
}
]
}
export default defineConfig({
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
'components': resolve(__dirname, 'src/components'),
'utils': resolve(__dirname, 'src/utils')
},
extensions: ['.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
}
})
3 开发服务器配置 (server)
server: {
proxy: {
"/dev-api": {
target: "http://localhost:3000",
changeOrigin: true,
rewrite: (path) => path.replace(/^\/dev-api/, "/api")
}
}
}
export default defineConfig({
server: {
port: 3000,
host: true,
open: true,
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
}
}
})
4 构建配置
export default defineConfig({
build: {
outDir: 'dist',
assetsDir: 'assets',
sourcemap: false,
minify: 'terser',
terserOptions: {
compress: {
drop_console: true,
drop_debugger: true
}
},
rollupOptions: {
output: {
manualChunks: {
vendor: ['vue', 'vue-router', 'pinia'],
utils: ['lodash-es']
}
}
}
}
})
5 CSS 配置
export default defineConfig({
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/variables.scss";`
},
less: {
globalVars: {
primaryColor: '#1890ff'
}
}
},
devSourcemap: true
}
})
6 环境变量配置
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd())
return {
define: {
'process.env': env
}
}
})
高级配置示例
完整的 Vite 配置
3 SVG 图标支持
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
plugins: [
createSvgIconsPlugin({
iconDirs: [resolve(process.cwd(), 'src/assets/icons')],
symbolId: 'icon-[dir]-[name]'
})
]
4 PWA 支持
import { VitePWA } from 'vite-plugin-pwa'
plugins: [
VitePWA({
registerType: 'autoUpdate',
includeAssets: ['favicon.ico', 'apple-touch-icon.png'],
manifest: {
name: 'My App',
short_name: 'MyApp',
theme_color: '#ffffff'
}
})
]
配置最佳实践
1 开发环境优化
2 生产环境优化
3 性能优化
总结

浙公网安备 33010602011771号