vite.config.js 的基本配置项。
展示 vite.config.js 的基本配置。
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
export default defineConfig({
// 项目根目录
root: process.cwd(),
// 基础路径
base: '/',
// 静态资源目录
publicDir: 'public',
// 构建输出目录
build: {
outDir: 'dist',
assetsDir: 'assets',
sourcemap: false
},
// 开发服务器配置
server: {
port: 3000,
host: '0.0.0.0',
open: true,
proxy: {
'/api': {
target: 'http://localhost:8080',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
}
},
// 插件配置
plugins: [vue()]
})
vite.config.js 的路径配置。
展示路径配置的使用。
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
export default defineConfig({
// 路径别名配置
resolve: {
alias: {
'@': path.resolve(__dirname, 'src'),
'components': path.resolve(__dirname, 'src/components'),
'assets': path.resolve(__dirname, 'src/assets'),
'views': path.resolve(__dirname, 'src/views'),
'api': path.resolve(__dirname, 'src/api')
}
},
// CSS 配置
css: {
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/variables.scss";`
}
}
}
})
vite.config.js 的构建优化配置。
展示构建优化的配置。
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { splitVendorChunkPlugin } from 'vite'
export default defineConfig({
// 构建配置
build: {
// 启用/禁用 CSS 代码拆分
cssCodeSplit: true,
// 构建后是否生成 source map 文件
sourcemap: false,
// 自定义底层的 Rollup 打包配置
rollupOptions: {
output: {
manualChunks: {
'vue-vendor': ['vue', 'vue-router', 'vuex'],
'element-plus': ['element-plus']
}
}
},
// 启用/禁用 gzip 压缩大小报告
reportCompressedSize: false,
// 启用/禁用 brotli 压缩大小报告
brotliSize: false,
// 指定生成静态资源的存放路径
assetsInlineLimit: 4096
},
// 插件配置
plugins: [
vue(),
splitVendorChunkPlugin()
]
})
vite.config.js 的多页面配置。
展示多页面配置的使用。
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'
export default defineConfig({
// 多页面配置
build: {
rollupOptions: {
input: {
main: path.resolve(__dirname, 'index.html'),
admin: path.resolve(__dirname, 'admin.html')
}
}
},
// 插件配置
plugins: [vue()]
})
vite.config.js 的常用插件配置。
展示常用插件的配置。
import { defineConfig } 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'
import { VitePWA } from 'vite-plugin-pwa'
export default defineConfig({
// 插件配置
plugins: [
// Vue 插件
vue(),
// JSX 支持
vueJsx(),
// 自动导入 API
AutoImport({
imports: ['vue', 'vue-router', 'vuex'],
dts: 'src/auto-imports.d.ts'
}),
// 自动导入组件
Components({
resolvers: [ElementPlusResolver()],
dts: 'src/components.d.ts'
}),
// PWA 支持
VitePWA({
registerType: 'autoUpdate',
manifest: {
name: 'My App',
short_name: 'App',
theme_color: '#ffffff',
icons: [
{
src: '/pwa-192x192.png',
sizes: '192x192',
type: 'image/png'
}
]
}
})
]
})
vite.config.js 的自定义插件配置。
展示自定义插件的配置。
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
// 自定义插件
const myPlugin = () => {
return {
name: 'my-plugin',
config(config) {
console.log('My plugin is running')
return {
// 修改配置
build: {
rollupOptions: {
// 自定义配置
}
}
}
}
}
}
export default defineConfig({
// 插件配置
plugins: [
vue(),
myPlugin()
],
// 自定义配置
optimizeDeps: {
include: ['vue', 'vue-router', 'vuex']
}
})
vite.config.js 的环境变量配置。
展示环境变量的配置。
// .env.development
VITE_APP_TITLE=开发环境
VITE_APP_API_URL=http://localhost:3000
// .env.production
VITE_APP_TITLE=生产环境
VITE_APP_API_URL=https://api.example.com
// vite.config.js
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig(({ command, mode }) => {
// 加载环境变量
const env = loadEnv(mode, process.cwd())
return {
// 插件配置
plugins: [vue()],
// 环境变量配置
define: {
__APP_ENV__: JSON.stringify(env.VITE_APP_TITLE)
},
// 开发服务器配置
server: {
proxy: {
'/api': {
target: env.VITE_APP_API_URL,
changeOrigin: true
}
}
}
}
})
vite.config.js 的多环境配置。
展示多环境配置的使用。
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig(({ command, mode }) => {
// 加载环境变量
const env = loadEnv(mode, process.cwd())
// 根据环境配置不同的选项
const isProduction = mode === 'production'
return {
// 基础路径
base: isProduction ? '/production-sub-path/' : '/',
// 构建配置
build: {
// 生产环境配置
minify: isProduction ? 'terser' : 'esbuild',
sourcemap: !isProduction,
rollupOptions: {
output: {
manualChunks: isProduction ? {
'vue-vendor': ['vue', 'vue-router', 'vuex']
} : undefined
}
}
},
// 开发服务器配置
server: {
port: isProduction ? 8080 : 3000,
proxy: {
'/api': {
target: env.VITE_APP_API_URL,
changeOrigin: true
}
}
}
}
})
建议按照章节顺序学习,每完成一个练习后再进行下一个。可以通过实际项目来实践所学知识,特别是构建优化和环境配置部分。注意 Vite 的配置与 Vue CLI 有所不同,需要适应新的配置方式。