所有技术选择都是存在主义的:当Vite抛弃打包传统,当React颠覆DOM统治,它们本质上都在回答同一个问题——"我们该如何更诗意地栖居在数字荒野?"
从 0 死磕全栈系列文章
从0死磕全栈第1天:从写一个React的hello world开始
Vite作为新一代前端构建工具,凭借其极快的启动速度和热更新能力,已经成为React项目的首选。今天我们就来全面解析Vite的常用配置,让你的开发效率飞起来!
🔧 基础配置模板
// vite.config.js
import { defineConfig } from 'vite' // 导入配置方法
import react from '@vitejs/plugin-react' // React插件
import path from 'path' // 路径处理模块
export default defineConfig({
base: '/app/', // 部署基础路径(子目录部署时需要)
plugins: [react()], // 使用的插件列表
resolve: {
alias: { // 路径别名(简化导入)
'@': path.resolve(__dirname, './src'),
'components': path.resolve(__dirname, './src/components')
},
extensions: ['.js', '.ts', '.jsx', '.tsx'] // 自动补全扩展名
},
server: { // 开发服务器配置
port: 3000, // 端口号
open: true, // 自动打开浏览器
proxy: { // API代理配置
'/api': {
target: 'http://localhost:8080', // 后端地址
changeOrigin: true, // 修改请求源
rewrite: path => path.replace(/^\/api/, '') // 路径重写
}
}
},
build: { // 生产构建配置
outDir: 'dist', // 输出目录
sourcemap: true // 生成sourcemap便于调试
}
})
💡 注释说明:
base
:当项目部署在非根路径时使用(如GitHub Pages)
resolve.alias
:让import
语句更简洁
server.proxy
:解决开发环境跨域问题
🚀 性能优化配置
// 生产环境特化配置
build: {
assetsDir: 'static', // 静态资源存放目录
minify: 'terser', // 使用terser进行代码压缩
chunkSizeWarningLimit: 1500, // 分块大小警告阈值(KB)
rollupOptions: {
output: { // 代码分割策略
manualChunks: {
react: ['react', 'react-dom'], // 单独打包React
utils: ['lodash', 'axios'] // 工具库单独打包
}
}
}
}
🔍 优化要点:
- 合理拆分代码包减少首屏加载体积
- 静态资源分类存放便于CDN部署
- 大文件单独警告避免意外打包
🎨 CSS处理方案
css: {
modules: {
localsConvention: 'camelCase' // CSS Modules使用驼峰命名
},
preprocessorOptions: {
scss: {
additionalData: `@import "@/styles/vars.scss";` // 全局SCSS变量
}
},
postcss: { // 自动添加浏览器前缀
plugins: [require('autoprefixer')]
}
}
💅 样式处理技巧:
additionalData
:自动注入全局样式变量,减少重复css样式编写
postcss
:自动处理浏览器兼容前缀
modules
:避免CSS类名冲突
🌐 环境变量管理
- 创建环境文件:
.env.development # 开发环境
.env.production # 生产环境
- 变量定义规则:
# 必须以VITE_开头才能被客户端访问
VITE_API_URL=https://api.example.com
VITE_DEBUG=true
⚠️ 安全提示:
敏感变量应放在
.env.local
(已默认gitignore)
💡 实用技巧
- 按需加载配置:
// 根据命令参数动态配置
export default defineConfig(({ command, mode }) => {
if (command === 'serve') {
return { /* 开发配置 */ }
} else {
return { /* 生产配置 */ }
}
})
- 多页面应用:
build: {
rollupOptions: {
input: {
main: path.resolve(\_\_dirname, 'index.html'),
admin: path.resolve(\_\_dirname, 'admin.html')
}
}
}
- SSR支持:
ssr: {
target: 'node', // SSR运行环境
noExternal: ['react-icons'] // 需要打包的依赖
}
🚨 常见问题解决
问题1:路径别名@不生效
✅ 解决方案:
import { fileURLToPath } from 'url'
const \_\_dirname = path.dirname(fileURLToPath(import.meta.url))
resolve: {
alias: {
'@': path.resolve(\_\_dirname, './src')
}
}
问题2:代理配置无效
✅ 正确写法:
proxy: {
'/api': {
target: 'http://localhost:3000',
changeOrigin: true,
rewrite: path => path.replace(/^\/api/, ''),
secure: false // 关闭HTTPS验证
}
}
掌握这些配置技巧后,你的Vite项目将获得:
⚡ 闪电般的启动速度
🔄 即时的热模块更新
📦 最优化的打包输出
建议收藏本文作为配置参考手册,需要时可快速查阅!