Vite 配置
📖 概述
@tsoul/vite-config
是一个功能强大的 Vite 配置解决方案,支持 Vue、React、Svelte 等多个框架。它提供了一套完整的构建工具链,包括自动导入、插件管理、构建优化等功能。
🎯 特性
- 多框架支持: Vue 3、React、Svelte
- 自动导入: 组件、样式、图标等自动导入
- 插件集成: 开箱即用的常用插件
- 构建优化: 压缩、分析、调试等工具
- 开发增强: 开发工具、热更新等功能
- 类型支持: 完整的 TypeScript 支持
🚀 快速开始
安装
bash
npm install @tsoul/vite-config -D
# 或
pnpm add @tsoul/vite-config -D
基础配置
typescript
// vite.config.ts
import { defineConfig } from 'vite'
import viteConfig from '@tsoul/vite-config'
export default defineConfig((configEnv) => {
const viteEnv = loadEnv(configEnv.mode, process.cwd()) as ImportMetaEnv
return viteConfig(viteEnv)
})
📝 框架配置
Vue 项目
typescript
import vueConfig from '@tsoul/vite-config/vue'
export default defineConfig((configEnv) => {
const viteEnv = loadEnv(configEnv.mode, process.cwd()) as ImportMetaEnv
return vueConfig(viteEnv)
})
React 项目
typescript
import reactConfig from '@tsoul/vite-config/react'
export default defineConfig((configEnv) => {
const viteEnv = loadEnv(configEnv.mode, process.cwd()) as ImportMetaEnv
return reactConfig(viteEnv)
})
Svelte 项目
typescript
import svelteConfig from '@tsoul/vite-config/svelte'
export default defineConfig((configEnv) => {
const viteEnv = loadEnv(configEnv.mode, process.cwd()) as ImportMetaEnv
return svelteConfig(viteEnv)
})
🔧 功能配置
自动导入
typescript
{
plugins: [
// API 自动导入
AutoImport({
imports: ['vue', '@vueuse/core', 'vue-router'],
resolvers: [ElementPlusResolver({ importStyle: 'sass' }), IconsResolver({ prefix: 'Icon' })],
dirs: ['./src/stores'],
vueTemplate: true,
}),
// 组件自动导入
ComponentsVue({
extensions: ['vue', 'md'],
include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
resolvers: [ElementPlusResolver({ importStyle: 'sass' }), IconsResolver({ enabledCollections: ['ep'] })],
}),
]
}
插件配置
typescript
{
plugins: [
// UnoCSS 原子化 CSS
UnoCSS(),
// 构建进度
progress(),
// 源码调试
inspect(),
// 打包分析(仅开发环境)
process.env.NODE_ENV === 'development' && visualizer,
// 压缩配置
compress(viteEnv.VITE_COMPRESS_TYPE),
]
}
开发服务器
typescript
{
server: {
host: true,
port: 3000,
open: true,
cors: true,
proxy: {
// 配置代理
}
}
}
构建配置
typescript
{
build: {
target: 'es2015',
cssTarget: 'chrome80',
outDir: 'dist',
assetsDir: 'assets',
assetsInlineLimit: 4096,
cssCodeSplit: true,
sourcemap: false,
rollupOptions: {
// Rollup 配置
}
}
}
🎨 自定义配置
扩展配置
typescript
export default defineConfig((configEnv) => {
const viteEnv = loadEnv(configEnv.mode, process.cwd()) as ImportMetaEnv
return vueConfig(viteEnv, {
// 自定义配置
server: {
port: 8080,
},
build: {
sourcemap: true,
},
})
})
环境变量
env
# .env
VITE_APP_TITLE=My App
VITE_API_URL=http://api.example.com
VITE_COMPRESS_TYPE=gzip
🚨 常见问题
1. 自动导入不生效
检查以下几点:
- 确保目录路径配置正确
- 检查文件扩展名是否包含在配置中
- 验证组件名称是否符合命名规范
2. 构建性能问题
优化建议:
- 使用
build.reportCompressedSize: false
关闭压缩报告 - 配置适当的
build.chunkSizeWarningLimit
- 使用
build.rollupOptions.output.manualChunks
优化分包
3. 开发服务器配置
如果遇到跨域问题:
typescript
{
server: {
proxy: {
'/api': {
target: 'http://api.example.com',
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '')
}
}
}
}